(为什么我要这么做:我在windows上使用libpng的预先构建的二进制文件(尽管经过了很多小时的尝试和错误),因此现在我正试图自己编译它。我找到了与此相关的this helpful blog post,其中包含一个Microsoft Visual Studio 2008项目文件,但遗憾的是仍然无法使用它。)
当链接到找到的zlib二进制文件here时,它成功编译,但当尝试链接到测试文件时,我收到以下消息:
C:“文档和设置”\administrator\my documents>cl“C:“文档和设置”
GS\administrator\my documents\test.c“”C:\文档和设置\administrator\m
y documents\libpng.lib“-i”C:“文档和设置”\administrator\my documents\include”
802.86微软(R)32位C/C++优化编译器版本150.30727.01
版权所有(c)Microsoft Corporation。保留所有权利。
测试C
Microsoft(R)增量链接器版本9.00.30729.01
版权所有(c)Microsoft Corporation。保留所有权利。
/输出:test.exe
测试对象
“C:\documents and settings\administrator\my documents\libpng.lib”
msvcrdt.lib(msvcr90d.dll):错误lnk2005:\u已在libcmt.lib中定义中止(
中止对象)
msvcrdt.lib(msvcr90d.dll):错误lnk2005:_fread已在libcmt.lib中定义(
自由目标)
msvcrdt.lib(msvcr90d.dll):错误LNK2005:\u malloc已在libcmt.lib中定义
(马洛克·奥布)
msvcrdt.lib(msvcr90d.dll):错误lnk2005:libcmt.lib(f)中已经定义了可用
(目标)
msvcrdt.lib(msvcr90d.dll):错误lnk2005:libcmt中已经定义了iob函数
.lib(_file.obj)
链接:警告LNK4098:defaultlib'msvcrdt'与其他lib的使用冲突;u
se/nodefaultlib:库
test.exe:致命错误LNK1169:找到一个或多个多重定义的符号
有谁愿意透露一下如何纠正这些错误吗?
最佳答案
问题是,这两个项目中的一个是使用多线程DLL,而另一个是在项目属性中使用多线程(没有DLL)->配置属性-> C/C++ +>代码生成。
发生在我身上好几次。
确保“同步”该设置,即使对于发布版本和每个可能的组合(调试、非调试等)
关于c - 使用Microsoft Visual Studio '08编译libpng时,如何避免出现“错误LNK2005:”(已定义stdlib函数)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1937937/