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

Tho*_*mas 4 c++ linker visual-studio visual-c++

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

切换到非调试运行时/ MT会导致链接错误./ Mtd编译好.这是许多错误的抽样.

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

如果我明确地告诉链接器与libcmtd.lib链接,它甚至可以用/ MT编译,但这会带来什么后果?

如何让我的代码编译?(不必做上面的伎俩?)

编辑:我用cout注释掉了这些语句并编译了....为什么......

Ofe*_*lon 7

您说明确强制libcmtd.lib作为链接器输入 - 这是静态CRT 的调试版本,并且正是与/ MT(声明与发布静态CRT的链接的交换机)冲突的根源.

从链接器输入中完全删除libcmtd并检查它是否有效.


Max*_*xim 6

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