在MacOS上编译Irrlicht项目时出现“架构x86_64找不到符号”错误

时间:2013-04-03 10:56:40

标签: macos compiler-errors codeblocks irrlicht

我在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. 使用this tutorial编译Irrlicht。 在编译时,我得到了关于使用弃用函数的4个警告,但我认为它不会导致我的问题。
  2. this安装。
  3. 任何人都可以帮助我吗? 感谢。

    upd:我发现只有当我尝试调用任何Irrlicht函数时才会出现此错误。对于与项目静态链接的库,它可以正常工作。

1 个答案:

答案 0 :(得分:0)

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

#pragma comment(lib, "libIrrlicht.a")
在include之后的代码中的

(我认为我已将 .a 文件放在项目目录中进行测试)。


P.S。:您是否已指定 Code :: Blocks 在哪里寻找库? 我记得在 Xcode (3.2.x)中还有不同的路径部分:)

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