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

[本文参考]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中的函数进行声明也可。

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页