Dec 31, 2008

dll 教程,dynamic link library

windows下,dll 分为 run-time 和 load-time。前者只需 .dll 文件,调用比较复杂。后者需要
.dll
.lib (export library)
.h
调用和静态库一样,是我们下面讨论的内容。

采用 VC 2005 wizard,选择 dll 和 precompiled header.
默认生成的三个文件都不用改动。

添加自己的源文件。参见例子中 mycode.h mycode.cpp

(VC 中定义了宏 DLLEX_EXPORTS)

#ifdef DLLEX_EXPORTS
#define DLLDIR  __declspec(dllexport)     // export DLL information
#else
#define DLLDIR  __declspec(dllimport)     // import DLL information
#endif

所有函数和类都要加上 DLLDIR

客户端:
一切和调用静态库一样,需包含 mycode.h
将.lib加入依赖库(或者使用 #pragma comment(lib,"dllex.lib") ),.dll放在系统路径

更详细的教程参见
http://www.codeproject.com/KB/DLL/RegDLL.aspx

0 comments: