c++ - LNK2005:找到用/MT构建的模块

标签 c++ nmake mapserver lnk2005 mt

我正在尝试构建 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/

相关文章:

c++ - 链接 boost.asio

c++ - 将 vector 指向数组

c++ - 为什么/如何在 visual studio 中默认包含一些 c++ 头文件?

c++ - 如何使用CMake更改构建机器类型

c++ - Windows 8.1 上的最小编译环境

c++ - 如何在 Enterprise Architect 操作参数中显示 "const"c++ 说明符

windows - 查看 nmake 发出的命令

c# - Environment.SetEnvironmentVariable 未设置任何值

performance - MapServer 性能缓慢

cgi - MapServer cgi-bin 从查询字符串中获取值并连接到 Postgres 查询