【问题标题】:How to avoid "error LNK2005:" (already defined stdlib functions) when compiling libpng with Microsoft Visual Studio '08?使用 Microsoft Visual Studio '08 编译 libpng 时如何避免“错误 LNK2005:”(已定义 stdlib 函数)?
【发布时间】:2010-12-28 14:51:27
【问题描述】:

(为什么我要这样做:我在 Windows 上为 libpng 使用预构建的二进制文件时运气不佳(尽管经过了许多小时的反复试验),因此我现在正在尝试自己编译它。我发现this helpful blog post 与此有关,附带一个 Microsoft Visual Studio 2008 项目文件,但遗憾的是仍然无法使用它。)

链接到找到的 zlib 二进制文件 here 时成功编译,但尝试将其链接到测试文件时,我收到以下信息:

C:\Documents and Settings\Administrator\My Documents>cl "C:\Documents and Settin gs\Administrator\My Documents\test.c" "C:\Documents and Settings\Administrator\M y Documents\libpng.lib" -I "C:\Documents and Settings\Administrator\My Documents\include" Microsoft (R) 32 位 C/C++ 优化编译器版本 15.00.30729.01 用于 80x86 版权所有 (C) 微软公司。版权所有。 测试.c Microsoft (R) 增量链接器版本 9.00.30729.01 版权所有 (C) 微软公司。版权所有。 /out:test.exe 测试.obj "C:\Documents and Settings\Administrator\My Documents\libpng.lib" MSVCRTD.lib(MSVCR90D.dll):错误 LNK2005:_abort 已在 LIBCMT.lib( 中止.obj) MSVCRTD.lib(MSVCR90D.dll):错误 LNK2005:_fread 已在 LIBCMT.lib 中定义( fread.obj) MSVCRTD.lib(MSVCR90D.dll):错误 LNK2005:_malloc 已在 LIBCMT.lib 中定义 (malloc.obj) MSVCRTD.lib(MSVCR90D.dll) : 错误 LNK2005: _free 已经在 LIBCMT.lib(f ree.obj) MSVCRTD.lib(MSVCR90D.dll):错误 LNK2005:___iob_func 已在 LIBCMT 中定义 .lib(_file.obj) 链接:警告 LNK4098:defaultlib 'MSVCRTD' 与使用其他库冲突;你 se /NODEFAULTLIB:库 test.exe:致命错误 LNK1169:找到一个或多个多重定义的符号

有人能提供一些关于如何修复这些错误的信息吗?

【问题讨论】:

    标签: c visual-studio visual-studio-2008 visual-c++ lnk2005


    【解决方案1】:

    问题是两个项目之一在项目属性中使用 多线程 DLL 而另一个在项目属性中使用 多线程(其中没有 DLL) - > 配置属性 -> C/C++ -> 代码生成。

    发生在我身上好几次了。

    确保即使对于发布版本和每个可能的组合(调试、非调试等)也“同步”该设置

    【讨论】:

    • 那……真是太棒了。另外,山姆,同上。
    • 此设置出现在可被 grep 的文件中的什么位置?我在 vcxproj 文件下找不到任何内容,但我可能搜索了错误的术语。
    • 实际上,今天刚刚在 vcxproj 的 diff 中发现了这一点,我错误地搜索了编译器标志 /MDd 而不是设置的相应描述性文本。显示为:<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
    猜你喜欢
    • 1970-01-01
    • 2012-09-24
    • 2023-03-31
    • 2012-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-11
    相关资源
    最近更新 更多