Hi,请  登录  或  注册

DLL 生成器:我在项目里实测后的小经验

这段时间为了给自己的项目做插件化,把一些逻辑拆成独立 DLL。手动创建工程太折腾,于是我顺手写了一个 DLL 生成器。简单讲,就是输入模块名,它会自动生成头文件、实现文件,还有一个可以直接用的编译脚本。

DLL 生成器:我在项目里实测后的小经验


生成的基础模板结构

生成器会自动创建下面这些:

/MyModule
    include/MyModule.h
    src/MyModule.cpp
    build.bat

MyModule.h 会自动写好导出宏:

#ifdef MY_EXPORT
#define MY_API __declspec(dllexport)
#else
#define MY_API __declspec(dllimport)
#endif

extern "C" {
    MY_API int Add(int a, int b);
}

这样不用手动配置导出函数。


实测:生成 DLL 并调用

我输入模块名:MathTool

生成器创建完后,我在 MyModule.cpp 写了最简单的测试逻辑:

int Add(int a, int b) { return a + b; }

然后运行自动生成的:

build.bat

几秒后 DLL 文件就出来了。

调用测试也非常顺利:

typedef int(*AddFunc)(int, int);

HMODULE h = LoadLibrary(L"MyModule.dll");
AddFunc Add = (AddFunc)GetProcAddress(h, "Add");
printf("%d\n", Add(10, 20));

运行结果:30

说明模板的导出设计和编译参数没有问题。


实测:导出类的处理

直接导出 C++ 类 ABI 不稳定,我用的是更稳妥的封装方式:
通过 C 接口生成对象,再返回指针。

模板代码为:

class MY_API MathTool {
public:
    int Multiply(int a, int b);
};

extern "C" {
    MY_API MathTool* CreateMathTool();
    MY_API void DestroyMathTool(MathTool*);
}

实际测试后,这种方式跨 DLL 调用最稳定。


使用体验总结

写了 DLL 生成器之后,新增一个 DLL 模块只需要 2 秒:
输入名字 → 自动生成文件 → build.bat 编译。
比过去的“新建项目 → 配置环境 → 添加宏”要省事太多。

对于做 C++、插件化、中间层桥接(比如给 Node、C# 调用)的会很友好。

仅限交流,拒绝商用!

下载地址:


隐藏内容,解锁需 付费 30
付费解锁

文章名称:DLL 生成器:我在项目里实测后的小经验
除非特别注明,本站所有文章均为原创,转载请注明出处:264玫瑰资源库
部分教程资源来源于互联网,请谨慎辨别广告内容,避免上当受骗!

评论 抢沙发

登录

找回密码

注册