我正在尝试将我的可执行文件部署到另一台机器上,因此我需要非调试运行时。
切换到非调试运行时/MT会导致链接错误。 /Mtd编译正常。这里是众多错误样例:
1>libcpmtd.lib(_tolower.obj) :错误 LNK2001:无法解析的外部符号_calloc_dbg 1>libcpmtd.lib(locale.obj) :错误 LNK2001:无法解析的外部符号_calloc_dbg 1>libcpmtd.lib(wlocale.obj) :错误 LNK2001:无法解析的外部符号_calloc_dbg 1>libcpmtd.lib(StlCompareStringA.obj) :错误 LNK2001:无法解析的外部符号_free_dbg 1>libcpmtd.lib(locale.obj) :错误 LNK2001:无法解析的外部符号_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的语句,然后它就编译了....为什么......
cout
会改变库搜索顺序,并明确使用libcmtd.lib使其在使用release之前使用debug CRT。请确保所有内容都是在release模式下编译的。 - 1201ProgramAlarm