1、新建DLLTest文件夹,在该文件夹中新建source文件夹。
2、在source文件夹中造add.c。
3、win+R+cmd请出总指挥“命令行”,输入。
4、继续输入(路径也要随机应变)link /DLL /out:E:\VCfile\DLLTest\source\add.dll E:\VCfile\DLLTest\source\add.obj。
5、新建源文件call_dll.c或.cpp放到DLLTest文件夹,同时add.dll也复制过来。
6、编译,连接运行出现个5。调用成功。
注意事项:
C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。
VC编写dll文件
1、VC++->New->Project->Win32 Dynamic_Link Library
2、选择创建一个空工程
首先DLL需要一个头文件,所以新建一个C\C++ Header File
这个头文件中必须包含想要输出的变量和函数,头文件必须定义用于输出的任何符号和数据结构。
例如 :
这里边又一个预定义
#ifdef MYLIBAPI
#else
#define MYLIBAPI extern "C" __declspec(dllimport)
#endif
为什么要加这一句呢?
因为相同的函数被C++编译后在符号库中的名字与C语言编译后的不同,所以如果使用的是标准C就要告诉编译器,要保留原来的名字,这里用extern “C”来实现。
当然DLL还需要一个源文件,在工程中新建一个 C++Source File
代码如下,此代码 中的宏定义是必须的。
编译以后,会在工程的DEBUG文件夹下生成一个DLL文件。这样DLL文件就创建成功。
下面展示一下如何使用这个DLL。代码如下,这里是显示引用DLL。
运行以后程序就会输出:1+2=3
证明调用动态链接库里的 Add函数成功。
dll制作步骤:1.编写dll函数实现源代码hello.c
#include
int say_hello(char* name)
{
printf( "hello %s\n ", name)
return 1
}
2.编写dll函数输出定义文件hello.def.
LIBRARY hello
EXPORTS
say_hello @1
3.编译dll源码,生成dll,lib文件.
3.1 新建命令行窗口
3.2 设置PATH ?? INCLUDE ?? LIB 3个环境变量.
SET PATH=K:\vcnet\vc7\bin%PATH%
SET INCLUDE=K:\vcnet\vc7\include%INCLUDE%
SET LIB=K:\vsnet\Vc7\lib%LIB%
3.3 编译hello.c
cd K:\Source\dllsample (hello.c和hello.def所在目录)
cl /c hello.c
3.4 链接hello.obj,生成hello.dll,hello.lib两个文件.
link /def:hello.def /dll hello.obj
4.测试dll函数.
4.1 编写测试代码 test.c
extern int say_hello(char* name)
int main(int argc,char** argv)
{
say_hello( "robbie ")
return 0
}
4.2 编译测试代码test.c
cl /c test.c
4.3 链接test.obj和 hello.lib,生成可执行文件test.exe
link test.obj hello.lib
4.4 运行test.exe,屏幕输出:
hello robbie
至此,一个dll构造完毕.