vs2005dll创建和使用简单例子

来源:互联网 发布:64位dbc2000数据库 编辑:程序博客网 时间:2024/05/22 14:12

打开vs2005,文件-》新建-》项目,选择“win32项目”,在“名称”中输入“liugdll”,点“确定”-》下一步,在“应用程序设置”的“应用程序类型”中选择“DLL”,“附加选项”中选择“空项目”,然后点“完成”。这样dll项目就建立起来了。

project :liugdll

 

one.h

extern "C" int addx(int a,int b);//主要是让该dll被可以被c程序调用。

 

one.cpp

#include"one.h"
int addx(int a,int b)
{
 return a+b;
}

 

testdll.def

LIBRARY "liugdll"
EXPORTS
addx @1

linker-》input-》模块定义文件:liugdll.def 

debug编译结果得到 liugdll.dll liugdll.lib

b 使用declspec(dllexport)

 

//只有头文件不同

one.h

extern "C" __declspec(dllexport)  int addx(int a,int b);//主要是让该dll被可以被c程序调用。 如果使用了调用协定的话,调用协定放在__declspec(dllexport)右边。

 

 

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------

2,使用

a隐士调用

需要把三个文件放到 你使用该dll的程序目录中

one.h liugdll.dll  liugdll.lib

 

one.h这个和定义dll的one.h是不一样的(也就是其实有两个one.h)//其实一般利用宏就可以避免定义两个,这里只是为了说明最简单的例子,所以不那么做。

def文件定义导出函数的方式,one.h中的extern "C"都要删掉

不是用def定义导出函数的方式,__declspec( dllexport )要修改成__declspec(dllimport)

 

程序中使用方法:

1 ,包含one.h头文件

2,在 连接器-》输入-》添加依赖里面 加上liugdll 或者直接在调用程序里面添加 #pragma comment(lib, “liugdll.lib”)

3,

#include"one.h"
#pragma comment(lib, "liugdll.lib")


int main()
{
 int sum=0;
 sum=addx(1,2);
 return 0;
}

 

b显示调用

需要把one.h liugdll.dll文件放到 你使用该dll的程序目录中

1 ,包含one.h头文件

2,在你的程序引用改dll的cpp中
#include"one.h"

HINSTANCE  hinstance = LoadLibrary("liugdll.dll");
typedef int (*_add) (int a, int b);
_add myadd= (_add)GetProAddress(hinstance, "addx");

然后开始使用

 myadd(1,2)