0

我已经在 MacOSX 10.8 上编译并安装了 Irrlicht 1.8。然后我创建了使用 Irrlicht 的 CodeBlocks 项目。现在,当我尝试编译它时,出现以下错误:

    "_objc_msgSend_stret", referenced from:
      irr::CIrrDeviceMacOSX::setResize(int, int)in libIrrlicht.a(CIrrDeviceMacOSX.o)
      irr::CIrrDeviceMacOSX::createWindow()      in libIrrlicht.a(CIrrDeviceMacOSX.o)
      irr::CIrrDeviceMacOSX::CIrrDeviceMacOSX(irr::SIrrlichtCreationParameters const&)in libIrrlicht.a(CIrrDeviceMacOSX.o)
      irr::CIrrDeviceMacOSX::CIrrDeviceMacOSX(irr::SIrrlichtCreationParameters const&)in libIrrlicht.a(CIrrDeviceMacOSX.o)
      -[AppDelegate windowDidResize:] in libIrrlicht.a(AppDelegate.o)
      -[AppDelegate windowWillResize:toSize:] in libIrrlicht.a(AppDelegate.o)
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status

我猜问题出在我编译 Irrlicht 的方式上。我是这样做的:

  1. 使用本教程编译 Irrlicht。编译时,我收到了 4 个关于使用不推荐使用的函数的警告,但我认为它不会导致我的问题。
  2. 安装。

任何人都可以帮我吗?谢谢。

upd:我发现这个错误只发生在我尝试调用任何 Irrlicht 函数时。库只是静态链接到项目,它工作正常。

4

1 回答 1

0

大约两年前,我在 Mac OS X (10.6) 上使用Irrlicht时遇到过此类错误,但我真的不记得我是如何解决这个问题的。我记得它与链接器(就像你一样)有关,所以我必须在Xcode目标部分指定 libIrrlicht.a 文件并放置一个

#pragma comment(lib, "libIrrlicht.a")

在包含之后的代码中(我认为我已将.a文件放在项目目录中进行测试)。


PS:你有没有指定Code::Blocks在哪里寻找库?我记得在Xcode (3.2.x) 中也有不同的路径部分:)

PPS:你确定你已经正确编译了 Irrlicht 吗?也许你已经为 i386 而不是 x86_64 编译它:P

于 2013-04-04T14:51:11.380 回答