如何在Windows上将LibXtract构建为DLL

时间:2011-09-06 09:40:08

标签: c++ c

现在我只是想尝试使用一些音频库,而LibXtract就是其中之一。在gcc的帮助下,我将LibXtract构建为静态库,一切正常:)

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

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

1 个答案:

答案 0 :(得分:1)

我搜索了LibXtract代码,发现其中似乎没有dll输出代码,所以我认为LibXtract现在可以编译成静态格式,否则你必须修改库代码...... (不太确定)

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

关于Andy T提到的主题(感谢您的评论:)),他说mingw中构建的静态库可以在MSVC中链接,我试过并发现至少两件事这将导致结论失败:

  1. 如果静态库是用标准C编译的,那么大多数时候几乎都可以,因为.a和.lib的格式看起来是一样的,但是当你调用一些不支持的函数时在MSVC中,会有未引用的问题......

  2. 如果静态库是用标准C ++编译的,会出现更多问题,显而易见的就是名称错误,因为gcc和MSVC之间的名称修改操作非常不同,这会导致很多链接时的非引用问题......

相关问题