【问题标题】:How do I compile and link a library (SDL) with g++ so that I have a standalone program?如何使用 g++ 编译和链接库 (SDL),以便拥有独立程序?
【发布时间】:2012-11-01 07:19:32
【问题描述】:

我在 Windows 7 上使用 MinGW。

简单地说,我想创建一个 Hello World SDL 程序(启动一个窗口或一些简单的东西),然后编译它,以便我有一个可以分发的独立程序,例如,用户不必安装任何额外的东西(比如将SDL.dll 放在 Windows 文件夹中)。

  • 我已经下载了 SDL 开发库,目前是 坐在c:\SDL
  • 在我的项目文件夹中,我有 test.cppSDL.dll

我不太确定下一步该做什么;起初我以为我可以包含 SDL,然后只需在命令行中链接到 DLL,瞧,但也许我需要先用我的程序编译 SDL 开发库?我唯一的目标是将我的 SDL 程序打包在一个文件夹中,我可以将其分发到其他 Windows 平台,而无需他们安装任何额外的东西 - 或者他们肯定需要在 Windows 文件夹中安装 SDL.dll?

编辑:进一步澄清 - 有人可以描述我要采取的步骤吗?我的意思是,想要分发他的应用程序的开发人员会做什么?安装此类应用程序时,大多数游戏安装程序是否实际上将.dll 文件放在Windows 文件夹中?

来源(test.cpp):

#include <SDL/SDL.h>
#include <iostream>
using namespace std;

int main ()
{
  cout << "Hello World!";
  return 0;
}

文件夹:

test.cpp SDL.dll

命令行:

g++ test.cpp -lSDL

输出:

test.cpp:2:17: fatal error: SDL.h: No such file or directory compilation terminated

【问题讨论】:

  • 他们肯定需要 SDL.dll,但它不必位于 Windows 文件夹中。如果您愿意,可以从任何地方加载它。查找 LoadLibrary Windows API。对“DLL 注入”进行一些研究可能是一个想法,因为这似乎是目前的热门安全话题。
  • 您的编译器找不到头文件 SDL/SDL.h,您可能需要使用 g++ -IC:/SDL test.cpp -lSDL 或其他东西(抱歉,我不确定 SDL 安装的外观如何)。

标签: c++ compilation sdl


【解决方案1】:

包含 SDL,然后在命令行中链接到 DLL,瞧

是的,差不多就是这样。

但也许我需要先用我的程序编译 SDL 开发库?

什么?除非您正在为嵌入式系统开发,否则没有单独的“开发”库。您链接到程序启动时将加载的同一个 DLL。

【讨论】:

  • 您能否详细说明实际过程?我只需要通过g++编译并在命令行选项中链接DLL文件?
  • @DesmondWolf 是的,完全正确。注意包含和库路径(您可能需要使用-I-L 手动指定它们)。
  • 谢谢。在我的源代码中,#include &lt;SDL/SDL.h&gt;SDL.dll 与我的代码位于同一文件夹中。但我不确定使用什么命令行选项来编译它。如果我这样做:g++ test.cpp -lSDL,它会说:fatal error: SDL.h: No such file or directory
  • 不幸的是,-I. 似乎没有任何效果。我在--help 或任何文档中都找不到它,但我认为这段时间与当前目录有关?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-03-08
  • 2014-11-30
  • 1970-01-01
  • 1970-01-01
  • 2023-03-03
  • 2013-12-15
  • 2016-02-27
相关资源
最近更新 更多