首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++ IrrKlang声音错误- CreateIrrKlangDevice()导致未定义的参考值(非常长的参考)

C++ IrrKlang声音错误- CreateIrrKlangDevice()导致未定义的参考值(非常长的参考)
EN

Stack Overflow用户
提问于 2015-07-25 02:57:22
回答 1查看 1.5K关注 0票数 0

最近,我下载了Irrklang声音库用于我的C++程序。为了测试它,我已经在Code::Block的编译器设置和我的项目构建设置中安装和链接了这个库。但是,每当我尝试构建和运行以下代码时:

代码语言:javascript
复制
#include <irrKlang.h>
using namespace std;
using namespace irrklang;
int main(){
    ISoundEngine* engine = createIrrKlangDevice();
}

"Build“选项卡引发以下错误:

代码语言:javascript
复制
|Line 5|undefined reference to`_imp___ZN8irrklang20createIrrKlangDeviceENS_21E_SOUND_OUTPUT_DRIVEREiPKcS2_'|

下面是"Build“选项卡中的错误:

代码语言:javascript
复制
64bit-1.5.0\lib\Winx64-visualStudio\irrKlang.lib"
obj\Debug\main.o: In function `main':
C:/Users/Johnny/Desktop/Python/Learner/main.cpp:5: undefined reference to _imp___ZN8irrklang20createIrrKlangDeviceENS_21E_SOUND_OUTPUT_DRIVEREiPKcS2_'
collect2.exe: error: ld returned 1 exit status
Process terminated with status 1 (0 minute(s), 0 second(s))
1 error(s), 0 warning(s) (0 minute(s), 0 second(s))

我必须告诉你,这是我第一次用C++下载和使用库。我使用了本教程:http://www.learncpp.com/cpp-tutorial/a3-using-libraries-with-codeblocks/

我在google上查过这个错误,当有同样问题的人出现时,他们得到的所有解决方案要么太模糊,要么他们的错误报告是由不同的错误引起的。

以下是我翻阅的几页:

http://www.ambiera.com/forum.php?t=939

我看过的不只是这个,主要是在同一个论坛上,但我只能发布最多两个链接,我决定,更重要的是,你可以告诉我如何链接图书馆。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-26 19:18:04

您正在尝试链接使用C++ C++在用C++构建的程序中生成的GNU (或者更确切地说,链接DLL的导出库)。

您不能这样做有几个原因,其中最简单的原因是MS和GCC编译器对C++符号使用不同的名称损坏约定。因此,您的编译器将irrklang::createIrrKlangDevice简化为:

代码语言:javascript
复制
ZN8irrklang20createIrrKlangDeviceENS_21E_SOUND_OUTPUT_DRIVEREiPKcS2_

出于链接的目的,但是在您试图链接的导出库中,它被导出为:

代码语言:javascript
复制
createIrrKlangDevice@irrklang@@YAPEAVISoundEngine@1@W4E_SOUND_OUTPUT_DRIVER@1@HPEBD1@Z

您安装的irrKlang包将此导出库存储在irrKlang-64bit-1.5.0\lib\Winx64-visualStudio中,这一事实暗示它只与Windows64位Visual工具链兼容。

要将64位irrKlang.dll链接到使用GNU构建的64位程序,您必须获得irrKlang源代码,并使用GNU重新构建dll。我不相信源代码是公开的。否则,只能使用Visual构建64位程序。

如果您满足于构建一个32位程序(该程序将在64位Windows上运行),那么您可以使用32位版本的irrKlang 1.5。它包含32位静态和动态库构建,由32位GCC构建,驻留在名为win32-gcc的子文件夹中,而不是Winx64-visualStudio

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31622425

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档