首页 文章

编译中的Geany,g和SDL错误

提问于
浏览
3

所以,我正在关注一个简单的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 回答

  • 1
    g++ -Wall -c -lSDL2 "%f"
    

    在编译阶段绝对不需要指定库 . 删除 -lSDL .

    g++ -Wall -o -lSDL2 "%e" "%f"
    

    它调用编译器,暗示链接(没有 -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 (图书馆排在最后,图书馆顺序也很重要) .

相关问题