在使用Microsoft Visual Studio ’08编译libpng时,如何避免“错误LNK2005:”(已经定义了stdlib函数)?

(为什么我要尝试这样做:我没有运气在Windows上使用libpng的预构建二进制文件(尽管经过了数小时的试验和错误),因此我现在正在尝试自己编译它。我发现这个有用的博客关于这个的post ,完成了Microsoft Visual Studio 2008项目文件,但遗憾的是仍然无法使用它。)

它在链接到此处找到的zlib二进制文件时成功编译,但在尝试将其链接到测试文件时,我收到以下内容:

     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 for 80x86
    版权所有(C)Microsoft Corporation。 版权所有。

     test.c的
     Microsoft(R)增量链接器版本9.00.30729.01
    版权所有(C)Microsoft Corporation。 版权所有。

     /out:test.exe
     test.obj
     “C:\ Documents and Settings \ Administrator \ My Documents \ libpng.lib”
     MSVCRTD.lib(MSVCR90D.dll):错误LNK2005:_abort已在LIBCMT.lib中定义(
     abort.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:找到一个或多个多重定义的符号

任何人都可以关心如何解决这些错误?

问题是两个项目中的一个使用multithreadingDLL,而另一个项目在项目属性 – >配置属性 – > C / C ++ – >代码生成中使用multithreading (不包含DLL)。

好几次发生在我身上。

确保即使对于发布版本以及每种可能的组合(调试,非调试等),“同步”该设置