我正在尝试构建 C++ 项目( map 服务器)。这取决于其他一些项目。
当我运行nmake
时,它显示许多如下错误:
...
LIBCMTD.lib(getenv.obj) : error LNK2005: _getenv already defined in MSVCRT.lib(MSVCR90.dll)
LIBCMTD.lib(tolower.obj) : error LNK2005: _tolower already defined in MSVCRT.lib(MSVCR90.dll)
LIBCMTD.lib(fflush.obj) : error LNK2005: _fflush already defined in MSVCRT.lib(MSVCR90.dll)
MSVCRT.lib(MSVCR90.dll) : error LNK2005: __strnicmp already defined in LIBCMTD.lib(strnicmp.obj)
...
我知道这是由 /MD
和 /MT
选项引起的,因为它们因项目而异。
我检查了所有项目的构建文件,只发现一个带有 /MT
的文件。我将其更改为 /MD
并重建它,但错误仍然存在。
如何查找导致此错误的库?
谢谢大家!
附注项目 list :
curl-7.24.0
expat-2.0.1
freetype-2.4.8
gdal-1.9.0
gdwin32
jpeg-6b
lpng158
mapserver <-- main
postgresql-8.4.9
proj-4.7.0
regex-0.12
zlib
最佳答案
查看此知识库
http://msdn.microsoft.com/en-us/library/6wtdswk0(v=vs.71).aspx
根据您尝试执行的构建使用忽略库行。如果您正在使用的库需要该库,您将收到该库未找到的符号,您可以修复它。
此外,您还可以使用 dumpbin
来找出库将尝试链接到的内容。
关于c++ - LNK2005:找到用/MT构建的模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9228690/