如何使用宏动态加载dll

时间:2016-04-30 16:35:03

标签: c++ dll module macros game-engine

很抱歉,标题令人困惑。无论如何我正在使用C ++开发一个小型游戏引擎,我想模块化它。我希望有一个核心模块,然后你可以根据你的使用(2D图形,3D图形,音频,物理等)安装其他模块,我认为最好(也许唯一)的方法是做每个模块我的VS解决方案中的另一个项目,编译为dll而核心是lib。核心库可以通过检查可以在dll中定义的 ENGINE_2D_GRAPHICS_MODULE 等宏来检查安装了哪些模块。我该怎么做?有更好的方法吗?我很确定这可能是一种更好的方式,但是它确实是什么。

1 个答案:

答案 0 :(得分:2)

宏是编译时常量,在安装新模块时,您不能以这种方式影响核心模块。您可能想要检测文件系统中是否存在其他模块,然后使用LoadLibrary(在Windows上)或dlopen(在符合POSIX的系统上)加载它们。

另一种选择是让游戏开发者(即引擎用户)静态链接你的库,并分别只编译所需的部分。