【问题标题】:Issues linking SOIL through g++ in Yosemite在优胜美地中通过 g++ 链接 SOIL 的问题
【发布时间】:2015-09-16 03:52:05
【问题描述】:

我一直在尝试将 SOIL 链接到我正在使用 OpenGL 进行的项目。我正在运行优胜美地 10.10.4。

当我尝试在我的代码中使用 SOIL 库时,我收到以下错误(更新):

ld: warning: ignoring file /usr/local/lib/libSOIL.a, 
file was built for archive which is not the architecture being linked (x86_64): /usr/local/lib/libSOIL.a
Undefined symbols for architecture x86_64:
"_SOIL_load_image", referenced from:
  init() in main-93f615.o
ld: symbol(s) not found for architecture x86_64

我的步骤

我遵循了 SOIL 中的 make 文件指示的过程:make, make install。它将 libSOIL.a 文件放在 /usr/local/lib 中,将 SOIL.h 放在 /usr/local/include 中。我包含在我的代码中:

#include "SOIL.h"

int width, height;
unsigned char* image = SOIL_load_image("CrayonBox2.png", &width, &height, 0, SOIL_LOAD_RGB);

我的 Makefile 包含这个 g++ 目标:

g++ -I/usr/X11R6/include -I/usr/local/include -I/opt/local/include -L/usr/local/lib/ -L/opt/local/lib -lSOIL -framework GLUT -framework OpenGL -framework CoreFoundation -o main main.cpp

然后就出现了上面的错误。

然后我尝试了许多不同的方法:我安装了this guy's version of SOIL for Mac OS(将 libSOIL.a 和 libSOIL.dylib 放在 /opt/local/lib 中,将 SOIL.h 放在 /opt/local/include 中);我尝试添加'-arch 1386 -arch x86_64'as per this answer's suggestion。对于其中的每一个,我仍然收到与以前相同的错误。

关于可能是什么问题的任何建议?

【问题讨论】:

  • 嗨,你解决了这个问题吗?我也有同样的问题。

标签: c++ macos opengl soil


【解决方案1】:

我也有同样的问题,我的解决方法是修改makefile,通过添加-m64让gcc支持64。

另见简单 OpenGL 图像库/projects/makefile/makefile:

CXXFLAGS = -O2 -s -Wall -m64

重新安装并替换 libSOIL.a。

希望答案对你有帮助。

【讨论】:

    【解决方案2】:

    在库规范(-l-L之前指定源文件:

    g++ main.cpp -I/usr/X11R6/include -I/usr/local/include -I/opt/local/include \
        -L/usr/local/lib/ -L/opt/local/lib -lSOIL -framework GLUT \
        -framework OpenGL -framework CoreFoundation
    

    你可能想要-o myexe,否则输出文件将是a.out...

    【讨论】:

    • 感谢您的提醒。我之前取出了 -o,因为我认为它不相关 - 我会把它放回去。这个答案还没有解决它,但我会记住这一点。
    【解决方案3】:

    您可能正在使用预编译的静态库。 最好为您的系统编译 SOIL。一个非常常见的编译管道是使用 CMake 和 Make。 克隆https://github.com/DeVaukz/SOIL移动到下载的目录。

    mkdir build
    cd build
    cmake ..
    make
    sudo make install
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-04
      • 2015-03-24
      • 1970-01-01
      • 1970-01-01
      • 2015-08-31
      相关资源
      最近更新 更多