c/c++创建动态库
上一篇 用的命令
cl /c xx.cpp //编译成obj link /dll /out:mou1.dll x.obj //链接生成dll 文件
cpp 的导入可以直接声明 导出函数
extern "C" __declspec(dllexport) void mou1() { puts("mou1"); }
不需要加
__declspec(dllexport)
也可以在当前文件里面写def 导出文件
接着命令 导出函数
link /dll /def:mou.def /out:mou1.dll x.obj
dumpbin /exports mou1.dll
查看导出函数
写代码调用dll
#include <stdio.h> #include <stdlib.h> #include <windows.h> typedef void (*fun)(); int main() { //mou1(); //加载这个dll HMODULE hModule=LoadLibrary(L"mou1.dll"); //获取导出函数地址 fun pfn = (fun)GetProcAddress(hModule, "mou1"); printf("%p", pfn); if (pfn!=NULL) { pfn(); } //卸载 FreeLibrary(hModule); system("pause"); }
如果要导出类必须需要用 关键字
__declspec(dllexport)
但是也是以函数形式导出的 构造函数,析构函数。。
从此山高路远,纵马扬鞭。愿往后旅途,三冬暖,春不寒,天黑有灯,下雨有伞。此生尽兴,不负勇往。