我用 Visual Studio 2012 (portaudio
和opus
)编译了库,当我尝试在QT项目中使用它们时告诉我他没有找到符号。
但是,当我删除.lib
文件时,我遇到另一个错误,告诉我lib不存在,所以lib很好找到。
在执行dumpbin.exe /SYMBOLS portaudio.lib
时,我有丢失的符号,但前面有_
!
我不明白,第一次在Windows上操作库并且它让我发疯了!
在我的.pro中我有:
win32:LIBS += -L$$PWD
win32:LIBS += -lopus
win32:LIBS += -lporaudio
答案 0 :(得分:2)
问题是你混合了32位和64位。
由于__cdecl
调用约定,带有下划线前缀的符号名称恰好位于32位库中。对于这个理论已经过时的64位库,情况并非如此。
如果您希望构建一个32位项目,请构建32位portaudio和opus,并相应地将项目配置为32位。
如果您希望构建64位项目,请使用64位库依赖项,即构建portaudio和opus。然后确保您自己的项目也有64位项目配置。