是否有可能将静态库链接到Visual Studio中的动态库?

我尝试在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)

当你说你把它设置为一个依赖项时,你的意思是你将它设置为项目依赖项,或者在“附加依赖项”下

Project Properties -> Librarian->General -> Additional Dependencies


一般来说,是的。

你所遇到的问题似乎是库(它是marmalade库?)实现了C ++运行库中的一些方法。 可能这个lib应该在不链接标准运行时库的情况下使用。

可能的解决方案:

  • 不要在您的DLL中链接c ++运行库。 这应该是可能的,如果你只写一个薄包装
  • 询问那些让他们认为这应该起作用的人
  • 使用lib.exe或dumpbin.exe来:
  • 提取lib的所有.obj文件
  • 从.obj文件中删除冲突的符号
  • 重新创建该库
  • 后者显然是一种丑陋的黑客攻击,应该保留用于既没有源代码又没有原始开发者的情况。

    链接地址: http://www.djcxy.com/p/64371.html

    上一篇: Is It possible to Linking static library into dynamic library in Visual Studio?

    下一篇: With Mingw created static library link into VS2008 project?