如今,我只是尝试使用一些音频库,而LibXtract是其中之一。在gcc的帮助下,我将LibXtract构建为静态库,一切顺利:)

但是,当我尝试在MSVC中使用lib时,遇到了一个问题:由于lib静态格式在gcc和MSVC之间不兼容,我只是尝试将LibXtract编译为DLL(共享)格式,但是即使我设置了configure标志(--enable-shared),该库仍被编译成静态格式...

有谁知道这件事吗?或者您可以给我一种更好的方法来实现该目标(在MSVC中使用LibXtract)?非常感谢 :)

最佳答案

我搜索了LibXtract代码,发现其中似乎没有dll输出代码,因此我认为LibXtract现在可能可以编译为静态格式,否则您必须修改库代码...(不是这样)当然)

现在,我只是将通过sh ./configure操作生成的原始代码和config.h复制到一个新的VC-Static-library项目中,还修改了许多代码(大多数是强制转换操作)以适合VS编译器,最后我得到了LibXtract.lib,但是我不太确定该更正...但是简单的测试程序似乎还可以:)

关于Andy T提到的主题(感谢您的评论:)),他说在mingw中内置的静态库可以在MSVC中链接,我已经尝试并发现至少有两件事会导致结论失败:

  • 如果静态库是用标准C编译的,则大多数情况下几乎都可以,因为.a和.lib的格式似乎相同,但是当您调用某些MSVC不支持的函数时,是未引用的问题...
  • 如果静态库是用标准C++编译的,则会出现更多问题,其中一个很明显的问题就是名称改写,因为gcc和MSVC之间的名称改写操作非常不同,因此链接时会导致很多未引用的问题。 ..
  • 08-19 13:34