默认情况下,Visual Studio编译项目以使用Visual Threat运行时中的多线程DLL。我想用/ MT而不是/ MD来编译我的程序。当然,大多数系统已经安装了这个系统,并且它也可以重新分配。编译没有多线程DLL的程序(Visual C++ 2010)
当我改变/ MD到/ MT,我得到一个错误:
MSVCRTD.lib(MSVCR100D.dll) : error LNK2005: _free already defined in LIBCMT.lib(free.obj)
而且四五个类似的错误。 要尝试解决此问题,我从默认库中删除了LIBCMT.LIB。
然后我得到的错误:
libcpmt.lib(_tolower.obj) : error LNK2019: unresolved external symbol __calloc_crt referenced in function __Getctype
从默认列表中删除MSVCRTD.LIB导致类似的错误? 应该注意的是: - 这是一个OpenGL项目,使用glfw库。 - 我使用lonesock的SOIL图像库进行纹理加载。
什么是您的构建设置?因为MSVCRTD是MSVCRT的调试版本。 – Bart 2012-02-05 11:37:53
可能的重复[解决LNK4098:defaultlib'MSVCRT'冲突](http://stackoverflow.com/questions/3007312/resolving-lnk4098-defaultlib-msvcrt-conflicts-with) – 2012-02-05 12:32:22