首先,我想说我已经意识到这已被问了十几次,而且我已经阅读了无数的解决方案而没有任何运气,因此我再次提出要求。
我正在使用OS X Mavericks 10.9.5,在Sublime 3中编写并使用带有g ++的终端进行编译
我正在尝试编译这个简单的文件(test.cpp)
#include <iostream>
#include <SDL2/SDL.h>
int main () {
if(SDL_Init(SDL_INIT_VIDEO)) {
std::cout << "I made it this far" << std::endl;
}
return 0;
}
编译器行:
g++ test.cpp
这将返回错误:
Undefined symbols for architecture x86_64:
"_SDL_Init", referenced from:
_main in test-ebbae4.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
所以,我尝试添加了很多不同的标记,-m32
只会更改结果以抛出Undefined symbols for architecture i386:
和ld: symbol(s) not found for architecture i386
我尝试过不同的-arch
版本,但我似乎无法让它发挥作用。还玩了-l -I
旗帜,但我不确定我知道他们做了什么/如何帮助他们......
有没有人知道接下来要做什么?
编辑:一些其他信息。我已经尝试使用.framework for SDL2,它没有改变任何东西,目前我正在使用通过编译源代码安装SDL2。标题位于usr/local/SDL2
答案 0 :(得分:2)
g ++ test.cpp
您也应该指定SDL库:
g ++ test.cpp -lsdl2
如果编译器驱动程序不熟悉,则可能需要包含路径:
g ++ test.cpp -L / path / to / the / library -lsdl2