5

OpenGL で作業しているプロジェクトのSOILをリンクしようとしています。Yosemite 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

その後、上記のエラーが表示されました。

次に、さまざまなことを試してみました。この男のバージョンの Mac OS 用 SOIL をインストールしました (libSOIL.a と libSOIL.dylib を /opt/local/lib に、SOIL.h を /opt/local/include に配置します)。'-arch 1386 -arch x86_64' この回答の提案に従って追加してみました。これらのそれぞれで、以前と同じエラーが表示されます。

何が問題なのかについての推奨事項はありますか?

4

3 に答える 3

1

私は同じ問題を抱えています。私の解決策はmakefileを変更して、gccが-m64を追加して64をサポートできるようにすることです。

Simple OpenGL Image Library/projects/makefile/makefile も参照してください。

CXXFLAGS = -O2 -s -Wall -m64

インストールを行い、libSOIL.a を再度置き換えます。

答えがお役に立てば幸いです。

于 2016-03-08T08:04:12.987 に答える
0

ライブラリ指定のにソース ファイルを指定します (-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...

于 2015-09-16T14:10:08.780 に答える