After creating a new LLVM-based project, I faced an odd problem. ExecutionEngine::create always retuned null. After some investigation I found out that it was due to the target architecture not getting registered. I’m using Visual C++ 2005 and in the X86TargetMachine.cpp file an extern variable X86TargetMachineModule is created to ‘ensure’ that the module is linked in. It works for the example projects, but not for the one I created. When I write a value to X86TargetMachineModule in another module, all is fine and dandy…
Although it’s a viable workaround for now I was wondering if anyone knew a more elegant solution, or has an explanation why X86TargetMachineModule works for the example projects but not for mine.