所以,我正在关注一个简单的C with SDL教程,但我遇到了一些错误 .
首先我使用Geany并且我下载了相应的SDL2库,这是事情:
在我的项目文件夹中有一个main.cxx文件,我使用geany打开,如前所述:
我包括这个库:
#include <iostream>
#include <SDL2/SDL.h>
#include <SDL2/SDL_image.h>
#include <SDL2/SDL_mixer.h>
首先我遇到了一个特殊的错误,编译执行成功,但是当涉及到构建我得到了这个错误:
main.cxx:对“SDL_Init”的未定义引用
搜索了一下之后我发现我必须将标签 -lSDL
添加到我的geany构建选项中,这样它们最终会成为像这样的东西:
编译:
g++ -Wall -c -lSDL "%f"
Build :
g++ -Wall -o -lSDL "%e" "%f"
但是有一个问题,现在当我执行构建命令时,我得到一个:
G:错误:main:没有这样的文件或目录
为什么我收到此错误,我是否包含错误的库或g .cxx文件有问题?我已经尝试过.cxx和.cpp之间的转换 .
提前致谢 .
1 回答
在编译阶段绝对不需要指定库 . 删除
-lSDL
.它调用编译器,暗示链接(没有
-c
或其他特定于操作的标志),并将输出文件名设置为-lSDL2
. 也就是说,链接器将在当前工作目录中名为-lSDL2
的文件中输出结果二进制文件 . 然后,当它到达链接的文件时,它会main
,它应该是-o main
,但是因为你存在've broken flags order it is now just ordinary file name that linker will try to link into resulting binary. It so happens that this file doesn' .长话短说,做出正确的连线 -
g++ -o "%e" %f -lSDL2
(图书馆排在最后,图书馆顺序也很重要) .