在编写程序的过程中,我们可能会想将一些功能比较通用的函数写好之后进行封装,打包,提供给自己或者发布给其他人使用(如果你的DLL做的足够漂亮),可以对其重用,刚好我也遇到了这样的问题,然后找了找了一些资料整理了一下,其实是很简单的。我用的是vc 6.0,首先建立一个win32 动态链接库工程,然后将自己写好的程序(最好是经过比较严格的测试的程序,不然出问题改的话 ,还是比较麻烦的)copy到动态链接库的工程中,可能会需要一些class或者Struct的声明,然后就是声明到处函数的接口,
extern "C" _declspec(dllexport) int output(int &,int &b);
int output(int &,int &b);是定义好的函数的接口。
如果没有任何的错误,就可以编译生成DLL和对应的lib库,然后将对应的dll库拷贝到测试工程的目录下面。在已经建好的工程里面声明自己函数的接口。
HMODULE hModule = ::LoadLibrary("test.dll");
PFUN newfun1= (PFUN)::GetProcAddress(hModule,"output");
需要包含头文件<windows.h>,test.dll是动态链接库的文件名,output是接口函数名,全部ok之后就可以直接使用,直接调用就可以了,调用newfun1(a,b),就可以得到对应的输出。
然后就是释放dll库::FreeLibrary(hModule);
注:生成的DLL库可以同时声明几个函数接口,只需要把声明函数的接口就ok了,最后在使用完所有的dll库中的函数之后释放即可,但是原则上是如果几个函数用于实现一个功能,则将几个函数合并层一个函数并提供唯一的接口,功能模块独立的原则,能够增加DLL库的复用。并且使用起来也更加简单些。
欢迎批评指正。