链接许多.libs来制作DLL:未解析的外部符号_DllMainCRTStartup
发布时间:2020-12-14 04:22:06 所属栏目:Windows 来源:网络整理
导读:我正在执行在 Windows上构建LLVM 3.3的(可怕)任务,我已经到了我有一堆LLVM * .lib文件的阶段.我想将它们连接到一个巨大的共享DLL,但我正在努力(这是我第一次在Windows上链接东西).我试过了: link /DLL /MACHINE:X64 /OUT:LLVM3.3.dll LLVM*.lib 但无济于事.
我正在执行在
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编译问题,看看这个document on github.
在将一个lib与错误的平台集合在一起(X86到X64)时,我曾经有过这个.确保构建所有LLVM * .lib并使用正确的工具链进行链接:
[...]Microsoft visual Studio 10.0VCbinamd64 cl.exe and link.exe 你通过电话得到的 "%PROGRAMFILES(X86)%Microsoft Visual Studio 10.0VCvcvarsall.bat" amd64 在混合MT和MD CRT时我也有类似的问题,我建议你坚持 /MD (or /MDd for debug) 在为任何LLVM * .lib(以及链接到其中的其他外部库中的任何其他对象)编译对象时. [编辑] 然后踢出那个丑陋的EmptyDllMain.obj! [/编辑] (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Meteor作为本机OSX或Windows 8应用程序
- windows – DFS-R压缩算法与7-zip相比如何?
- windows-server-2008-r2 – 旧电子邮件和会议请求被“淹没”
- Windows Vista 64位的命令行subversion客户端
- windows-server-2008-r2 – 为什么使用不同用户通过PowerSh
- windows-server-2008 – Amazon EC2实例/卷的简单备份策略?
- windows-server-2008 – 终端服务器无法在会话中运行程序
- windows-runtime – 是否有关于Windows运行时(WinRT)的本体
- Windows 2016 服务器安全配置和加固
- 无法在Windows 7中启动MySql服务