梁志斌的专栏

游戏开发 DirectX技术

 
首页>>
关于作者

作  者:梁  志  斌

QQ   :3055720

QQ群:14739153

友情链接
搜索日志
访问计数
最新评论

标准C\C++的DLL编写 [2005-8-7]
happy201 发表在 编程基础
DLL也就是动态链接库,使用DLL编程的好处大家应当都知道了吧,可是怎么样来作呢,今天我就来说说。

首先,你要确定你要导出那些个函数,然后你就在你要导出的函数名前加上下面一句话:

// 输出函数的前缀
#define DLL_EXPORT extern "C" __declspec( dllexport )

DLL_EXPORT VOID ExportFun()
{
...
}

是不是很简单啊。如果你要导出整个类或者全局变量,你需要这样做:

// 输出类的前缀
#define DLL_CLASS_EXPORT __declspec( dllexport )

// 输出全局变量的前缀
#define DLL_GLOBAL_EXPORT extern __declspec( dllexport )

完成了这些以后,我们就要在主程序中调用这些个函数了,用下面的方法:

HINSTANCE hInst = NULL;
hInst = LoadLibrary("*.dll"); // 你的DLL文件名

if (!hInst)
{
MessageBox(hWnd,"无法加载 *.Dll ","Error",MB_OK);
}

还记得上面我声明的那个ExportFun()函数吗?我不能直接得到那个函数,但是可以把那个函数的地址取出来。其实函数地址使用起来和函数是一样的。只不过,为了使用方便,需要定义一个函数指针的类型。如果要指向上面的那个ExportFun(),则它的函数指针的类型定义如下:

typedef void (CALLBACK* LPEXPORTFUN)(void)

之后需要做的是声明一个指针,然后得到DLL中ExportFun()的地址。GetProcAddress函数的第一个参数是之前得到的DLL的实例句柄,后面一个是DLL中那个函数的函数名。

LPEXPORTFUN pFun = NULL;
LPEXPORTFUN pFun = (LPEXPORTFUN)GetProcAddress(hInst, "ExportFun");

好了,到这里已经就要大功告成了,还差最后一步,调用那个函数:

pFun();

大功告成!!

≡≡≡≡≡ 评论(共 条)我要评论
 

 Copyright  @  好想~~~~好想 2005.03