文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>通过 Visual Studio 2008 用C语言创建和调用DLL

通过 Visual Studio 2008 用C语言创建和调用DLL

时间:2010-07-27  来源:btpka3

   目前做个C项目,从原先预想的Solaris平台跑到 Windows 2003 平台,IDE又从VS 6.0 -> VS 2008, 但客户又要求使用 VS 2005. 管他呢,先用 VS 2008 开发着吧。
   客户原有系统有些共通的库,有 *.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的)。

文件: VS2008_C_DLL.zip
大小: 271KB
下载: 下载


创建DLL (工程名称: SampleDll)

1. 创建工程:
New -> Visual C++ -> Win32 -> Win32 console application,
输入名称 “SampleDll” -> 确认 -> 弹出窗口中 Next -> Application 种类选择 DLL,
并选中 “Empty project” -> 确认

2. 编写Source
myFunctions.h

#ifndef _MYFUNCTIONS_H
#define _MYFUNCTIONS_H

#ifdef __cplusplus
extern "C" {
#endif

// In DLL project, Visual Studio will define macro ${PROJECT_NAME}_EXPORTS
// we can use this marco to EXPORT variables/functions in DLL project,
// and to IMPORT variables/functions in other projects which using this dll.
#ifdef SAMPLEDLL_EXPORTS
#define DLL_DECLARATION __declspec(dllexport)
#else
#define DLL_DECLARATION __declspec(dllimport)
#endif

    DLL_DECLARATION int mySum(int a, int b);

#ifdef __cplusplus
}
#endif

#endif/* _MYFUNCTIONS_H */


myFunctions.c

#include "myFunctions.h"

int mySum(int a, int b) {
    return a + b;
}


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>
#include "myFunctions.h"

int main(int argc, char** argv) {
    printf("%d\n", mySum(1, 2));
}


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, 则程序会异常中止)
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载