【问题标题】:fail to compile with SDL: Undefined symbols for architecture x86_64 [duplicate]无法使用 SDL 编译:架构 x86_64 的未定义符号 [重复]
【发布时间】:2020-03-23 17:02:21
【问题描述】:

我正在尝试使用 SDL2 库进行编译,但没有成功。

OS: MacOS 10.13.2
Visual Studio Code 1.43.1
Language: c++

我正在使用 Lazy Foo 的非常基本的示例代码。 这是我收到的消息:

[Running] cd "/Users/martinjoselizondocolomes/Programacion/01_hello_SDL/" && g++ 01_hello_SDL.cpp -o 01_hello_SDL && "/Users/martinjoselizondocolomes/Programacion/01_hello_SDL/"01_hello_SDL
Undefined symbols for architecture x86_64:
  "_SDL_CreateWindow", referenced from:
      _main in 01_hello_SDL-a16d96.o
  "_SDL_Delay", referenced from:
      _main in 01_hello_SDL-a16d96.o
  "_SDL_DestroyWindow", referenced from:
      _main in 01_hello_SDL-a16d96.o
  "_SDL_FillRect", referenced from:
      _main in 01_hello_SDL-a16d96.o
  "_SDL_GetError", referenced from:
      _main in 01_hello_SDL-a16d96.o
  "_SDL_GetWindowSurface", referenced from:
      _main in 01_hello_SDL-a16d96.o
  "_SDL_Init", referenced from:
      _main in 01_hello_SDL-a16d96.o
  "_SDL_MapRGB", referenced from:
      _main in 01_hello_SDL-a16d96.o
  "_SDL_Quit", referenced from:
      _main in 01_hello_SDL-a16d96.o
  "_SDL_UpdateWindowSurface", referenced from:
      _main in 01_hello_SDL-a16d96.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

[Done] exited with code=1 in 0.168 seconds

【问题讨论】:

  • 看来你需要链接 sdl 库。
  • 我该怎么做?你能更具体一点吗?我是新来的

标签: c++ macos visual-studio-code sdl-2


【解决方案1】:

构建 C++ 代码需要三个阶段:

预处理器处理宏和#include指令,因此在这一步需要你的头文件。

编译器 生成目标文件。这是在源文件中检查语法的地方。

链接器将目标文件和库组合成一个可执行文件,因此您的运行时库必须可用并指定给链接器。

对于 g++,您可以通过在命令行上给出库的全名来指定库,或者使用-l 快捷方式来确定正确的前缀 (lib) 和后缀。所以在你的情况下,我相信你可以添加-lSDL。

编辑:如果这不起作用,请检查输出

sdl-config --libs

【讨论】:

  • 我收到此错误(我尝试使用不同的名称 -lSDL -lSDL2):“找不到 -lSDL2 的库 clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)终端进程以退出代码终止:1“
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-10
  • 1970-01-01
  • 2013-09-16
  • 2017-03-03
  • 1970-01-01
相关资源
最近更新 更多