私はSDLとC++を使ってゲームを作っています。g ++はサードパーティのライブラリをリンクしていません
これまでは何もできませんでした。私はMacのためのすべての指示(私はMac v。10.12.2を持っています)とg ++をhttp://www.lazyfoo.net/tutorials/SDL/01_hello_SDL/index.phpに追いました。
今は、-l(小文字のL)オプションで指定されたライブラリが見つからないと言うリンカーエラーが発生しています。ここに私のMakefileがあります:
CC = g++
CFLAGS = -g -Wall -std=c++11
SDL_PATH = /Users/myname/Documents/Code-Libraries/SDL2-2.0.5
SDL_INCLUDE = -I$(SDL_PATH)/include
SDL_LIB = -L$(SDL_PATH) -l/usr/local/lib/libSDL2.a
default: SDL01
SDL01: 01_hello_SDL.cpp
$(CC) $(CFLAGS) 01_hello_SDL.cpp $(SDL_LIB) $(SDL_INCLUDE) -o SDL01
clean:
rm -f SDL01 *.o
私は-lSDL2を試しました。私は-lSDLを試しました。私は-l/usr/local/lib/libSDL2.aを試しました。私は/Users/myname/Documents/Code-Libraries/SDL2-2.0.5とこれ(/ Users/myname/Documents/Code-Libraries)を書くさまざまな方法で-Lオプション(-lオプションなし)を試しました。 /SDL2-2.0.5)私に教えてくれた...
Undefined symbols for architecture x86_64:
"_SDL_CreateWindow", referenced from:
_main in 01_hello_SDL-f65b5c.o
"_SDL_Delay", referenced from:
_main in 01_hello_SDL-f65b5c.o
"_SDL_DestroyWindow", referenced from:
_main in 01_hello_SDL-f65b5c.o
"_SDL_FillRect", referenced from:
_main in 01_hello_SDL-f65b5c.o
"_SDL_GetError", referenced from:
_main in 01_hello_SDL-f65b5c.o
"_SDL_GetWindowSurface", referenced from:
_main in 01_hello_SDL-f65b5c.o
"_SDL_Init", referenced from:
_main in 01_hello_SDL-f65b5c.o
"_SDL_MapRGB", referenced from:
_main in 01_hello_SDL-f65b5c.o
"_SDL_Quit", referenced from:
_main in 01_hello_SDL-f65b5c.o
"_SDL_UpdateWindowSurface", referenced from:
_main in 01_hello_SDL-f65b5c.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [SDL01] Error 1
...他の人はプロジェクトのヘッダーを見つけることができませんでした。私は本当に失われて、本当にいくつかの助けを愛するだろう。ありがとうございました。
EDIT1:
これらのファイルは/〜/ドキュメント内のディレクトリです/コード・ライブラリ/ SDL2-:私はnm /usr/local/lib/libSDL2.a | grep _SDL_CreateWindow
を行なったし、
0000000000001cb0 T _SDL_CreateWindow
0000000000000f80 T _SDL_CreateWindowAndRenderer
0000000000007620 t _SDL_CreateWindowAndRenderer_DEFAULT
U _SDL_CreateWindowAndRenderer_REAL
0000000000001cc0 T _SDL_CreateWindowFrom
0000000000009e80 t _SDL_CreateWindowFrom_DEFAULT
U _SDL_CreateWindowFrom_REAL
0000000000009e30 t _SDL_CreateWindow_DEFAULT
U _SDL_CreateWindow_REAL
0000000000000060 T _SDL_CreateWindowAndRenderer_REAL
U _SDL_CreateWindow_REAL
U _SDL_CreateWindow_REAL
00000000000030a0 T _SDL_CreateWindowFrom_REAL
0000000000000760 t _SDL_CreateWindowTexture
0000000000002010 T _SDL_CreateWindow_REAL
U _SDL_CreateWindow_REAL
EDIT2を得た
2.0.5 /ディレクトリ:
Android.mk SDL2.spec.in cmake_uninstall.cmake.in
BUGS.txt TODO.txt configure
CMakeLists.txt VisualC/ configure.in
COPYING.txt VisualC-WinRT/ debian/
CREDITS.txt VisualC.html docs/
INSTALL.txt WhatsNew.txt include/
Makefile.in Xcode/ sdl2-config.cmake.in
Makefile.minimal Xcode-iOS/ sdl2-config.in
Makefile.pandora acinclude/ sdl2.m4
Makefile.psp android-project/ sdl2.pc.in
Makefile.wiz autogen.sh src/
README-SDL.txt build/ test/
README.txt build-scripts/
SDL2.spec cmake/
ここでの構文は '-l/usr/local/lib/libSDL2.a'ではなく' -lSDL2'または '/ usr/local/lib/libSDL2.a'でなければなりません。 – nos
@nosあなたは説明できますか?私は、g ++が/usr/local/lib/libSDL2.aを私がリンクしようとしているライブラリであると理解する方法を理解していません。それは* .aなの? – astrocat1997
@nosまた、動作しませんでした:-(。アーキテクチャx86_64のための '未定義のシンボル:' 'たくさんのジャンクを持っています – astrocat1997