切换到非调试运行时/MT会导致链接错误



我正试图将我的可执行文件部署到另一台机器上,所以我需要非调试运行时。

切换到非调试运行时/MT会导致链接错误。/Mtd编译良好。以下是许多错误的示例。

1>libcpmtd.lib(_tolower.obj): error LNK2001:未解析的外部符号_calloc_dbg1>libcpmtd.lib(locale.obj): error LNK2001: unresolved external symbol _calloc_dbg1>libcpmtd.lib(wlocale.obj): error LNK2001: unresolved external symbol _calloc_dbg1>libcpmtd.lib(StlCompareStringA.obj): error LNK2001: unresolved external symbol _free_dbg1>libcpmtd.lib(locale.obj): error LNK2001: unresolved external symbol _free_dbg1>libcpmtd.lib(wlocale.obj):错误LNK2001:未解析的外部符号_free_dbg1>libcpmtd.lib(xlocale.obj):错误LNK2001:未解析的外部符号_free_dbg1>libcpmtd.lib(xwcsxfrm.obj): error LNK2001: unresolved external symbol _free_dbg

如果我显式地告诉链接器链接libcmtd。lib,它甚至可以用/MT编译,但是这样做的后果是什么?

如何让我的代码编译?(不需要做上面的技巧吗?)

编辑:我用cout注释掉语句,它编译....为什么…

从c++预处理器中删除_DEBUG定义

您说您显式强制libcmtd。lib作为链接器输入-这是静态CRT的调试版本,并且正是与/MT冲突的根源(一个声明与释放静态CRT链接的开关)。

从链接器输入中删除libcmtd,并检查它是否工作。

在许多情况下,我的应用程序是use/MT,而我的libcpmtd。没有/MT的lib构建。切换到相同的解决问题。

最新更新