The JIT and the EE communicate exclusively through ICorJitXXX
interfaces.
The build is not designed to allow direct calls between the JIT and the
EE.
Try to do the following:

In inc\corjit.h, add to the class ICorJitInfo:

  virtual int foo(int x);

In vm\jitinteface.h, add to the class CEEJitInfo:

   int foo(int x);

In vm\jitinterface.cpp, add:

int CEEJitInfo::foo(int x)
{  return x; }

In fjit\fjit.cpp, added in the method FJit::compileCEE_LDFLD.

jitInfo->foo(3);

-Jan

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 Yuan Yu
Sent: Tuesday, July 29, 2003 4:26 PM
To: [EMAIL PROTECTED]
Subject: [DOTNET-ROTOR] Build problem

I tried to add some code to src\vm, and call it in src\fjit, but
ran into linking problem. Here is what I did.

In inc\corjit.h, I added:

  int foo(int x);

In vm\jitinterface.cpp, I added:

  int foo(int x) { return x; }

In fjit\fjit.cpp, I added a call foo(3) in the method
FJit::compileCEE_LDFLD.

To build, I typed "build" in the src folder, but got the following
linking error:

Linking Executable - c:\yuan\proj\rotor\sscli\clr\bin\rotor_x86
\checked\mscorejt.dll for i386
fjit.obj : error LNK2019: unresolved external symbol "int
__stdcall foo(int)" (?foo@@[EMAIL PROTECTED]) referenced in function "private: enum
FJitResult __thiscall FJit::compileCEE_LDFLD(enum
opcode_t)" ([EMAIL PROTECTED]@@AAE?
AW4FJitResult@@W4opcode_t@@@Z)

What was wrong with this?  Help is greatly appreciated!

-Yuan

Reply via email to