【发布时间】:2019-06-10 00:26:29
【问题描述】:
我一直在关注一些关于在 Windows 上使用一些 C 库进行游戏开发的教程。在使用一些opengl库(freeglut、glew)时,我只需要使用“cl file.c”进行编译,如果我在当前目录中有正确的dll文件,它将编译并运行良好。
但对于 SDL,我必须明确提供 lib 文件,例如“cl sdlprog.c SDL2.lib SDL2main.lib”。我还必须指出它是一个带有“/link /subsystem:console”的控制台程序。
为什么我需要为 SDL 做这些事情? opengl 程序编译良好,无需提及 lib 文件。
我确保所有的 lib 文件都在正确的位置。它们与我放置 opengl lib 文件的位置相同。
【问题讨论】:
-
依赖项的使用机制因 SDK 而异。例如:您提到的 glew 构建,例如,在他们的网站上明确指出,当使用共享库配置时,“请记住在 Windows 上将您的项目与 glew32.lib、glu32.lib 和 opengl32.lib 链接,并且Unix 上的 libGLEW.so、libGLU.so 和 libGL.so (-lGLEW -lGLU -lGL)。” 关于您的问题,简单的答案是因为 SDL 作者选择提供他们的库以供使用,他们可能是the best source to ask。
-
您能发布您的 sdlprog.c 文件的一部分吗?我对预处理器宏(以 # 开头的行)感兴趣。
-
@CristiFati 从那时起我就删除了它,因为它只是一个初始化 sdl 的小测试程序。但我很确定它只是一个#include
,SDL2 存在的原因是因为我将 sdl 的标头放在 include\SDL2 中。 -
您应该提供一个 MCVE ([SO]: How to create a Minimal, Complete, and Verifiable example (mcve)),其中应包含代码、构建它的命令、错误以及成功的命令。
标签: c windows compilation linker cl