通过 Visual Studio 2008 用C语言创建和调用DLL
时间:2010-07-27 来源:btpka3
客户原有系统有些共通的库,有 *.h, *.lib, *.dll。可是一直就没写过DLL,而且还是C项目。怎么用C创建一个DLL,再用另外一个C项目引入DLL呢?先找找资料,做个Sample吧。
参考:
http://msdn.microsoft.com/en-us/library/3y1sfaz2(v=VS.80).aspx
http://blog.csdn.net/Ocean2006/archive/2009/12/21/5051126.aspx
http://blog.chinaunix.net/u/19962/showart_299092.html
PS:DLL类型有多种,使用的方法也有多种。以下的例子使用的是 静态加载DLL的 方式
(即通过 *.lib(仅有符号链接,不含运行代码) 来编译,运行时加载DLL的)。
|
创建DLL (工程名称: SampleDll)
1. 创建工程:
New -> Visual C++ -> Win32 -> Win32 console application,
输入名称 “SampleDll” -> 确认 -> 弹出窗口中 Next -> Application 种类选择 DLL,
并选中 “Empty project” -> 确认
2. 编写Source
myFunctions.h
#ifndef _MYFUNCTIONS_H |
myFunctions.c
#include "myFunctions.h" |
3. 设置工程属性
工程上右键 -> 属性 -> 构成:全部 -> C/C++ -> 高级 -> 编译语言选择 : C
4. 编译 && 发布 (Release)
Builde -> 构成Manager -> 当前工程的构成从Debug改为Release
Builde —> ReBuild
之后会在 ${Solution_HOME}\Release发现
SampleDll.dll
SampleDll.exp
SampleDll.lib
SampleDll.pdb
调用DLL (工程名:UseDll)
1. 创建工程
同创建DLL工程一致,只是最后一项选择为 Console Application 而不是 DLL
2. 编写Source
myMain.c
#include <stdio.h> |
3. 设置工程属性
工程上右键 -> 属性 -> 构成:全部 -> C/C++ -> 全般 -> 追加Include目录 : 追加文件 "myFunctions.h" 所在目录
工程上右键 -> 属性 -> 构成:全部 -> C/C++ -> 高级 -> 编译语言选择 : C
工程上右键 -> 属性 -> 构成:全部 -> Linker -> 全般 -> 追加Link目录 : 追加文件 “SampleDll.lib” 所在目录
工程上右键 -> 属性 -> 构成:全部 -> Linker -> 输入 -> 追加依存文件 : “SampleDll.lib”
将 “SampleDll.dll” 拷贝至 环境变量 %PATH% 下,或当前Solution的Debug目录下
4. 编译 && 运行
Shift + F5 : 至此就OK了,能看到命令行里输出个3.
(若没有找到 SampleDll.dll, 则程序会异常中止)