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

Invalid symbols name when compiling libraries with VS2012

本文关键字:无效 符号 VS2012 编译 使用      更新时间:2023-10-16

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

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

dumpbin.exe /SYMBOLS portaudio.lib时,我有缺失的符号,但前面有一个_

我不明白,第一次在Windows上操作库,这让我发疯!

在我的 .pro 中,我有:

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

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

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

情况并非如此。如果您希望构建 32 位项目,请构建 32 位

端口音频和 opus,并相应地将项目配置为 32 位。

如果你想建立一个 64 位

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