c++ - 在 Yosemite 中通过 g++ 链接 SOIL 的问题

标签 c++ macos opengl soil

我一直在尝试链接 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 .对于其中的每一个,我仍然收到与以前相同的错误。

对可能出现的问题有什么建议吗?

最佳答案

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

另见 Simple OpenGL Image Library/projects/makefile/makefile:

CXXFLAGS = -O2 -s -Wall -m64

重新安装并替换 libSOIL.a。

希望回答对您有所帮助。

关于c++ - 在 Yosemite 中通过 g++ 链接 SOIL 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32599470/

相关文章:

macos - 是否可以以编程方式为单个键打开 Macbook Pro 的键盘背光?

readxl::read_xls 返回 "libxls error: Unable to open file"

java - LWJGL 随机纹理失真

java - OpenGL ATI 与 NVIDIA GLSL 问题

c++ - 复制构造继承

c++ - 尝试使用 C++ 将着色器应用于 OpenGL 中的顶点数组的问题

macos - 尝试安装 ios-deploy 时出错

c++ - 有没有办法在 Qt GUI 应用程序的工作线程中使用 OpenGL 安全地绑定(bind)纹理?

c++ - 如何强制 Google 测试用例最后运行

c++ - 这两个领域/方法有什么区别?