繁体   English   中英

是否可以在Visual Studio中将静态库链接到动态库?

[英]Is It possible to Linking static library into dynamic library in 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

通常,是的。

您似乎遇到的问题是该库(是果酱类库吗?)实现了C ++运行时库中的某些方法。 可能应该在不链接标准运行时库的情况下使用此库。

可能的解决方案:

  • 不要在您的DLL中链接c ++运行时。 如果您只写一个薄包装,那应该有可能
  • 问那些制作lib的人他们认为这应该如何工作
  • 使用lib.exe或dumpbin.exe可以:
    • 提取lib的所有.obj文件
    • 从.obj文件中删除冲突的符号
    • 重新创建库

后者显然是一个丑陋的黑客,应该保留给既没有源开发者也没有原始开发者的情况。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM