我尝试在Visual Studio 2010 express中的动态库tmxParser.lib中链接静态库。我将静态库设置为动态库的依赖项。当VS构建静态库时,构建正常并创建tmxParser.lib。当VS构建动态库时,我收到链接器错误。我试图匹配属性页面下的运行时库 - >配置属性 - > C / C ++ - >代码生成 它没有任何帮助。任何人都有任何想法?
2>LIBCMTD.lib(fopen.obj) : error LNK2005: _fopen already defined in s3e_d.lib(iwcrt_stdio.obj)
2>LIBCMTD.lib(open.obj) : error LNK2005: __open already defined in s3e_d.lib(iwcrt_win32.obj)
2>LIBCMTD.lib(open.obj) : error LNK2005: __sopen already defined in s3e_d.lib(iwcrt_win32.obj)
2>LIBCMTD.lib(chsize.obj) : error LNK2005: __chsize already defined in s3e_d.lib(iwcrt_win32.obj)
2>LIBCMTD.lib(read.obj) : error LNK2005: __read already defined in s3e_d.lib(iwcrt_win32.obj)
2>LIBCMTD.lib(close.obj) : error LNK2005: __close already defined in s3e_d.lib(iwcrt_win32.obj)
2>LIBCMTD.lib(lseek.obj) : error LNK2005: __lseek already defined in s3e_d.lib(iwcrt_win32.obj)
2>LIBCMTD.lib(setmode.obj) : error LNK2005: __setmode already defined in s3e_d.lib(iwcrt_win32.obj)
答案 0 :(得分:0)
当你说你将它设置为依赖项时,你的意思是你将它设置为项目依赖项或者在 Project Properties -> Librarian->General -> Additional Dependencies
答案 1 :(得分:0)
一般来说,是的。
你遇到的问题似乎是库(它是marmalade library?)实现了C ++运行时库中的一些方法。可能这个lib应该在没有链接标准运行时库的情况下使用。
可能的解决方案:
后者显然是一个丑陋的黑客,应该保留给那些既没有源也没有原始开发者的情况。