Thanks Barry; this helps. Can you/someone shed some light onto my
next/second question: I want to limit my code into a separate folder and
expose it as dll to Rotor core. What changes should I do to Rotor make to
detect this new directory (say clr/src/Type1) and build it as dll which
will be used in the similar way as mscorejit.dll.

I could not infer it from previous reply or from sscli/docs. Thanks

Chris


On Tue, 1 Jul 2003 04:52:15 -0700, Barry Bond <[EMAIL PROTECTED]>
wrote:

>The fjit directory builds mscorejt.dll, while clr\src\vm builds
>cee_wks.lib, which is consumed by clr\src\dlls\mscoree to build
>sscoree.dll.  On Windows, each DLL has its own private namespace for
>types and functions, with ".def" files controlling what names are made
>available to other DLLs.
>
>In addition, mscorejt.dll does not link against sscoree.dll:  the
>linkage is one-way, from the EE to the JIT.  Sscoree.dll loads
>mscorejt.dll dynamically (via LoadLibrary), then calls GetProcAddress to
>look up the getJit() function address and calls it.  This is the one
>place where function pointers and data are exchanged between
>mscorejt.dll and sscoree.dll, via the ICorJitInfo and ICorJitCompiler
>interfaces.
>
>The following steps are based on the pattern used already between the EE
>and the JIT - I used ICorDynamicInfo:getHelperFtn as the reference,
>since it is implemented in the EE and called by the JIT:
>- add a new "ConstructMyType" method to the ICorJitInfo class:
>        - in clr\src\inc\corinfo.h, add the following method declaration
>to class ICorDynamicInfo:
>                virtual Type1* __stdcall ConstructMyType1(void);
>        - in clr\src\vm\jitinterface.h, add the following method to
>class CEEInfo:
>                virtual Type1* __stdcall ConstructMyType1(void);
>        - in clr\src\vm\jitinterface.cpp, implement
>CEEInfo::ConstructMyType1:
>                Type1* __stdcall CEEInfo::ConstructMyType1(void) {
>                        return new Type1();
>                }
>- from within the JIT, call compHnd->ConstructMyType() to create the
>Type1 instance.
>
>If you have declared all methods in Type1 virtual and keep all data
>private/protected, then everything will work without having to link
>mscorejt.dll against sscoree.dll.
>
>Barry
>This posting is provided "AS IS" with no warranties, and confers no
>rights.
>
>-----Original Message-----
>From: Discussion of the Rotor Shared Source CLI implementation
>[mailto:[EMAIL PROTECTED] On Behalf Of Chris
>Sent: Monday, June 30, 2003 9:27 PM
>To: [EMAIL PROTECTED]
>Subject: [DOTNET-ROTOR] Accessing the class in different source folder
>
>2 related questions on building the rotor with my source files. I added
>few of my own files to src/fjit folder; they can build and run well if I
>call into them from the file in fjit folder (I tested it by calling from
>fjit.cpp). As per my requirements however, files in core folder has to
>communicate with my code in fjit folder. This is where I am running into
>linker errors. I have following declarations in jitinterface.JITFunction
>
>Type1 t1;
>Type1 *t2=new Type1( );
>
>
>Type 1 is defined in file Type1.cpp in fjit folder. 2 Error mesgs that I
>get are error
>LNK2019: unresolved external symbol "public: virtual __thiscall Type
>1::....."
>
>Are these errors because I have to link Type1.obj with the Core? If so,
>how can I do it. Either way, please elaborate.
>
>My second question is: since all my code is independent of code in fjit
>folder anyway, what changes (and how) I have to do in "make" so that I
>can
>keep all of my code in a separate folder under "src" and yet compile and
>link it with Rotor in the usual way. Thanks in advance for
>clarifying....
>
>Cheers
>Chris

Thanks Barry; this helps. Can you/someone shed some light onto my next
question: I want to limit my code into a separate folder and expose it as
dll to Rotor core. What changes should I do to Rotor make to detect this
new directory (say clr/src/Type1) and build it as dll which will be
consumed in the same way as mscorejit.dll.

I could not infer it from previous reply or from sscli/docs. Thanks

Chris

Reply via email to