使用VS2012编译库时,符号名称无效

时间:2014-01-06 02:58:17

标签: c++ qt visual-studio-2012 qt-creator qmake

我用 Visual Studio 2012 portaudioopus)编译了库,当我尝试在QT项目中使用它们时告诉我他没有找到符号。

但是,当我删除.lib文件时,我遇到另一个错误,告诉我lib不存在,所以lib很好找到。

在执行dumpbin.exe /SYMBOLS portaudio.lib时,我有丢失的符号,但前面有_

我不明白,第一次在Windows上操作库并且它让我发疯了!

在我的.pro中我有:

win32:LIBS += -L$$PWD
win32:LIBS += -lopus
win32:LIBS += -lporaudio

1 个答案:

答案 0 :(得分:2)

问题是你混合了32位和64位。

由于__cdecl调用约定,带有下划线前缀的符号名称恰好位于32位库中。对于这个理论已经过时的64位库,情况并非如此。

如果您希望构建一个32位项目,请构建32位portaudio和opus,并相应地将项目配置为32位。

如果您希望构建64位项目,请使用64位库依赖项,即构建portaudio和opus。然后确保您自己的项目也有64位项目配置。