我将Visual C ++ 2012项目从多线程调试(/ MTd)切换到多线程调试DLL(/ MDd)。该项目是C ++ .vcxproj和Intel Fortran(.vfproj)项目的混合体。毕竟重建后我得到以下错误。
在CRT源代码中,我看到如果CRTDLL符号未定义,则在crt0dat.c中定义了有问题的符号。在编译主应用程序时,如何确保使用CRTDLL获取crt0dat?
其他任何建议如何解决此问题?
50>cmain.obj : error LNK2019: unresolved external symbol _initp_misc_cfltcvt_tab referenced in function wWinMain 50>cmain.obj : error LNK2001: unresolved external symbol _FPinit 50>C:\spm\git\clones\SPM80_dll\MSBuild\x64\dll_debug\SPM_dll_debug_x64.exe : fatal error LNK1120: 2 unresolved externals
答案 0 :(得分:0)
我相信/ MDd版本需要msvcrtd.lib。这应该是自动链接到您的项目的东西;它可能是通过项目设置忽略的。打开C ++项目的项目设置,然后在Linker-> Input下查看。隐藏所有默认库和忽略特定默认库的设置。查看是否存在可能导致链接器忽略msvcrtd.lib的任何内容。
顺便说一下,您的代码还需要运行相应的DLL,对于VS 2012来说,这将是msvcr110d.dll。安装VS 2012时,这应该已安装在您的计算机上,但如果将其移动到另一台计算机,则必须与可执行文件一起分发。