用VC 2005 Express可以做和以前VC 6一样的事情,今天就谈谈如何编写动态库.
VC 2005 Express提供了一个dll的创建向导,利用它可以产生动态库模版.在这个模版的基础上,依样画葫芦,就可以完成自己的功能了.
如何产生模版,这里就略去不提了,接下来只谈谈一些技巧.
技巧一:如何简化程序
动态库中的函数如何被外部程序使用呢?这里有2种方式.
方式一:通过__declspec(dllexport) functionname 的方式里将该函数导出.
方式二:通过定义def文件将函数导出.
例子:
假设有以下函数,其声明方式如下:
int foo(void);
采用方式一的时候,要在头文件,和c文件中这么写:
__declspec(dllexport) int foo(void)
采用方式二的时候,在头文件和c文件中的写法:
int foo(void);
(即没有任何变化)
添加一个def文件,文件名可以随便定,比如此处用foo.def,其内容为:
EXPORTS
foo @1
相比而言,两种方法是等效的,但是后者更加简单和清楚.后者不需要修改源码和头文件,而且还可以在def文件中指出函数的顺序号.
如果使用后者,要在编译的时候指出用哪个def文件.这个可以在项目的属性中指定.具体菜单为:项目->属性->配置属性->连接器->输入->模块定义文件中填上对应文件名即可。
命令行就采用:/DEF:"foo.def"
阅读(1267) | 评论(1) | 转发(0) |