VS2010中创建DLL和(静态)调用DLL

来源:互联网 发布:乌克兰少年 知乎 编辑:程序博客网 时间:2024/06/04 20:04

[本文参考]http://www.th7.cn/Program/cp/201211/113060.shtml

创建DLL

         新建indows ConsoleApplication,在“应用程序类型”选项中选择DLL,在“附加选项”中选择空项目,项目名称为CreateDll(自己定义),添加CreateDll.h和CreateDLl.cpp两个文件
/**********************************************/ /*FileName:CreateDll.cpp                          */ /**********************************************/ #define DllDemoAPI _declspec(dllexport) #include "CreateDll.h" #include <stdio.h> DllDemoAPI int add(int a, int b){return a+b;}DllDemoAPI int subtract(int a, int b){    return a-b;}DllDemoAPI int multiple(int a, int b){return a*b;}DllDemoAPI void Point::Print(int x,int y){printf("x=%d,y=%d",x,y);}
其中关键字_declspec(dllexport)用于导出函数,供其它调用该dll的程序使用
 /**********************************************/  /*FileName:CreateDll.h                           */ /**********************************************/ #ifdef DllDemoAPI #else #define DllDemoAPI _declspec(dllimport) #endif DllDemoAPI int add(int a, int b);DllDemoAPI int subtract(int a, int b);DllDemoAPI int multiple(int a, int b);class DllDemoAPI Point{   public:   void Print(int x, int y);};
编译生成DLL文件,这时会在解决方案的Debug文件夹下发现生成的CreateDll.dll和CreateDll.lib文件。

调用DLL

新建Windows ConsoleApplication,在“附加选项”中选择空项目,右键项目-》属性-》链接-》输入-》附加依赖项目处添加附加依赖性CreateDll.lib,(注意:先把CreateDll项目中生成的CreateDll.dll和CreateDll.lib两个文件拷贝到本项目的目录下,不是解决方案目录下),添加InvokeDll.cpp文件,内容如下
 /**********************************************/  /*FileName:InvokeDll.cpp                           */ /**********************************************/#include <stdio.h>   #include <Windows.h>   #include "CreateDll.h" //注意把生成DLL项目中的CreatDll.h拷贝到本项目目录下,不是解决方案目录下   int main(int argc, char* argv[])  {  /*加载dll函数调用方式为默认调用方式*/  printf("5+3=%d\n",add(5,3));   Point p;  p.Print(5,3);  getchar();return 0;  } 

另外一种方式,可以不在在“附加选项”中选择空项目,右键项目-》属性-》链接-》输入-》附加依赖项目处添加附加依赖性CreateDll.lib,而在InvokeDll.cpp程序中的开始部分加入“#pragma comment(lib, "CreateDll.lib") ”,其效用与前者相同。

总结:对于静态调用DLL,需要在调用的DLL的项目中添加当初创建DLL的CreateDll.h文件,若不添加,对你调用的DLL中的函数进行声明也可。

0 0