切换到 /MDd 时_initp_misc_cfltcvt_tab和_FPinit

_initp_misc_cfltcvt_tab and _FPinit when switching to /MDd

本文关键字:cfltcvt misc tab FPinit initp MDd      更新时间:2023-10-16

我将Visual C++ 2012项目从多线程调试(/MTd)切换到多线程调试DLL(/MDd)。该项目是C++ .vcxproj和英特尔Fortran(.vfproj)项目的混合体。毕竟是重建,我得到下面的错误。

在 CRT 源代码中,如果未定义 CRTDLL 符号,我看到在 crt0dat.c 中定义了有问题的符号。如何确保在编译主应用程序时使用 CRTDLL 获得 crt0dat?

任何其他建议如何解决此问题?

50>cmain.obj : 错误 LNK2019: 函数 wWinMain 中引用未解析的外部符号_initp_misc_cfltcvt_tab50>cmain.obj : 错误 LNK2001: 未解析的外部符号_FPinit50>C:\spm\git\clones\SPM80_dll\MSBuild\x64\dll_debug\SPM_dll_debug_x64.exe:致命错误LNK1120:2 个未解析的外部

我相信/MDd 构建需要 msvcrtd.lib。 这应该是自动链接到您的项目的内容;可能是通过项目设置忽略了它。 打开C++项目的项目设置,然后在链接器>输入下查看。 那里有"忽略所有默认库"和"忽略特定默认库"的设置。 查看是否有任何可能导致链接器忽略 msvcrtd.lib 的内容。

顺便说一句,您的代码还需要适当的 DLL 才能运行,对于 VS 2012,它将是 msvcr110d.dll。 当您安装VS 2012时,它应该已经安装在您的计算机上,但是如果您将其移动到另一台计算机,则必须与可执行文件一起分发。

相关文章:
  • 没有找到相关文章