我在使用irrklang库时遇到问题。我从https://www.ambiera.com/irrklang/downloads.html下载了.zip文件。我有一台配备Mojave 10.14.6的MacBookPro。
我试图编译以下源代码:
#include <stdio.h>
#include <irrKlang.h>
using namespace irrklang;
#pragma comment(lib, "irrKlang.lib") // link with irrKlang.dll
int main(int argc, const char** argv){
printf("\nHello World!\n");
return 0;
}
我的目录包含
dotnet-4-64
,macosx-gcc
,linux-gcc-64
,winx64-visualStudio
Makefile非常简单(我从原始.zip文件的examples
目录改编了一个:]
CPP = g++
OPTS = -dynamiclib -I"include" -L"bin/macosx-gcc" -lirrklang -pthread
all:
$(CPP) main.cpp -o example $(OPTS)
clean:
rm example
我添加了-dynamiclib
选项,因为否则链接程序将在/usr/lib
中搜索该库。
[当我运行Make
时一切似乎都正常,没有错误,但是如果我尝试执行./example
,则会出现以下错误:
-bash: ./example: cannot execute binary file
我在网上搜索,发现的唯一提示是用file ./example
检查与我的操作系统的兼容性:结果是
./example: Mach-O 64-bit dynamically linked shared library x86_64
并且按照预期,二进制文件实际上可以在此OS中执行。我看不到问题,有人有什么建议吗?
dynamiclib选项使gcc生成共享库而不是可执行文件。如您在file ./example
的输出中所见,它确实是一个动态链接的共享库,而不是可执行文件。
您应使用-L
选项指定库路径。尝试将绝对路径传递到-L
选项。