如果这是一个愚蠢的问题,请原谅我,但我正在关注一本书,但它不起作用。我有一个游戏引擎,它存在于一个 dll 中。它有几个外部函数可用于实际游戏应用程序:
extern void game_preload();
Run Code Online (Sandbox Code Playgroud)
这一切都是完美的,但当我去构建 all 时,我得到一个错误:
Undefined reference to `game_preload()'
Run Code Online (Sandbox Code Playgroud)
为什么是这样?我怎样才能让它构建 dll 以便我可以在应用程序中实现这些功能?
我正在阅读的书名为“高级 2D 游戏开发”,它没有提到存在问题。
编辑:我读错了这本书,我应该制作一个静态库而不是动态库。但是我可以问一下动态库的“extern”用法有什么类似的吗?
您必须链接静态或动态库(对于 MSVC,这是一个带有“lib”扩展名的文件,对于 GCC,这是“a”、“o”或“dll”,具体取决于您的系统等)。该extern
关键字旨在用于告诉编译器可以在另一个编译单元中找到某个变量(类似于前向声明,但针对变量)。无论如何,函数原型总是extern
存在的,因此可以省略它。
还有一种特殊情况,extern "C"
即使用 using 显式告诉编译器将某些代码作为 C 而不是 C++ 处理(例如,链接到 C++ 代码内的 C 样式函数)。
编辑:创建和使用静态库甚至更容易。您可以在此处阅读相关内容,包括一些示例。不过,我认为应该在书中的某些部分对此进行解释,除非您到目前为止不应该使用任何库(如其中一条评论中提到的)。
归档时间: |
|
查看次数: |
4224 次 |
最近记录: |