使用 VS2012 编译库时符号名称无效
Invalid symbols name when compiling libraries with VS2012
我用Visual Studio 2012(portaudio
和opus
)编译了库,当我尝试在QT项目中使用它们时,他告诉我他没有找到符号。
但是,当我删除.lib
文件时,我遇到了另一个错误,说我库不存在,所以库很好找到。
做dumpbin.exe /SYMBOLS portaudio.lib
时,我有缺失的符号,但前面有一个_
!
我不明白,第一次在Windows上操作库,这让我发疯!
在我的 .pro 中,我有:
win32:LIBS += -L$$PWD
win32:LIBS += -lopus
win32:LIBS += -lporaudio
问题是您混合了 32 位和 64 位。
由于__cdecl
调用约定,带有下划线前缀的符号名称恰好位于 32 位库中。对于 64 位库,此理论已经过时,
端口音频和 opus,并相应地将项目配置为 32 位。
如果你想建立一个 64 位的项目,请使用 64 位库依赖项,即构建 portaudio 和 opus so。然后,确保您自己的项目也有 64 位项目配置。
相关文章:
- 为什么在引用指针时将 const 放在 & 符号的左侧有效,而在右侧则无效?
- R 包安装错误:重新定位 0 具有无效的符号索引 11
- 错误:AES 加密密钥:从"char*"到"无符号字符"的转换无效
- 如何将常量无效*转换为无符号字符*
- 用户输入逻辑运算符符号或数字,如果输入字符或字符串则无效
- gcc添加符号时出现无效版本(max)错误:值错误
- cudaGetSymbolAddress(&cuset_addr, random_states_g) 中的设备符号无效
- 使用 VS2012 编译库时符号名称无效
- 编译器错误:从int*到无符号int*的转换无效[-fpermission]
- 未解析的外部符号提升::时间::system_clock::现在(无效)
- 错误:从 'short unsigned int*' 到"短无符号 int"的转换无效|(在 C++ 中)
- 转换常量无符号字符无效
- png++无效的模板参数Eclipse编辑器Cygwin符号链接
- 由于未定义的符号'start_time',MEX 文件无效
- 类型转换无效指针指向无符号短整型
- 从“void*”到“无符号字符*”的转换无效
- 错误 LNK2019:函数"私有:无效__cdecl"中引用的未解析的外部符号 KHPU
- 由于未定义符号,MEX文件无效
- reinterpret_cast<无符号长>无效的强制转换
- Fgetc()读取0c符号和数组元素无效?为什么呢?