我正在执行在 Windows 上构建 LLVM 3.3 的(可怕的)任务,并且我已经到了拥有大量LLVM*.lib
文件的阶段。我想将它们链接到一个巨大的共享 DLL,但我很挣扎(这是我第一次在 Windows 上链接东西)。我试过了:
link /DLL /MACHINE:X64 /OUT:LLVM3.3.dll LLVM*.lib
但无济于事。它错误:
LINK : warning LNK4001: no object files specified; libraries used
LINK : error LNK2001: unresolved external symbol _DllMainCRTStartup
LLVM3.3.dll : fatal error LNK1120: 1 unresolved externals
互联网建议添加/DEFAULTLIB:corelib
开关,所以我这样做了,但又出现了问题:
> link /DLL /MACHINE:X64 /DEFAULTLIB:corelibc /OUT:LLVM3.3.dll LLVM*.lib
LINK : warning LNK4001: no object files specified; libraries used
LINK : fatal error LNK1104: cannot open file 'corelibc.lib'
我该怎么做呢?
编辑:我设法解决了上述问题,通过实现一个空DllMain
并EmptyDllMain.obj
从中进行:
#include <windows.h>
BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
return TRUE;
}
然后尝试:
link /DLL /OUT:LLVM3.3.dll LLVM*.lib EmptyDllMain.obj
但是我得到的 DLL 只有 8kb - 它似乎错过了许多兆字节的 LLVM 库!我如何让它们包括在内?
EDIT2:我解决了 Windows 上的 LLVM 编译问题,看看github 上的这个文档。