VS创建和使用C++动态链接库教程

环境

系统:windows10 IDE:vs2005


创建

1.创建项目

打开vs,文件,新建项目,win32控制台应用程序,为项目起名 点击下一步,选择应用程序类型,dll,附加选项,空项目,点击完成

2.编辑代码

用于测试的库包括一个函数一个类,函数实现计算阶乘的功能,类里包含打印爱心的成员函数。 对头文件夹右键点击,添加,新建项,选择头文件 对于动态链接库,类和函数的格式: 导出函数

__declspec(dllexport) 返回值 函数名(参数列表);

导出类

class __declspec(dllexport) 类名;

编辑头文件abc.h,对函数和类进行声明 abc.h

#pragma once
__declspec(dllexport) int multiply(int);
class __declspec(dllexport) cABC{
private:
	char symbol;
public:
	cABC(char symbol);
	void print_love();
};

在源文件夹,添加一个cpp文件,实现所需的功能 abc.cpp

#include"abc.h"
#include<stdio.h>
int multiply(int number){
	int ret=number;
	number--;
	for(;number>0;number--){
		ret*=number;
	}
	return ret;
}
cABC::cABC(char symbol):
symbol(symbol)
{

}
void cABC::print_love(){
	float y,x,a;
	for(y=1.5f;y>-1.5f;y-=0.1f){
		for (x=-1.5f;x<1.5f;x+=0.05f){
			a=x*x+y*y-1;
			putchar(a*a*a-x*x*y*y*y<=0.0f?symbol: );
		}
		putchar(
);
	}
}

点击启动调试。会编译生成动态链接库,会弹出以下对话框,因为这不是一个应用程序,无法正常启动

打开项目文件夹下的debug目录 会发现已经生成了相应的动态库文件libabc.dll。 同时又生成了一个.lib文件。对于.lib文件,通常是windows静态链接库文件。 实际上,这里的.lib文件不是静态链接库文件。这个.lib文件里有相应的.dll文件的名字和一个指明.dll文件中函数入口的顺序表。使用动态库编译程序时会使用到。 因此,动态库的dll文件,伴随的lib文件和相关的头文件是一起发行的


使用

1.创建项目

另外启动vs。新建一个项目 点击完成

2.编辑代码

将动态库的头文件abc.h拷贝到项目的源文件目录下 对头文件文件夹右键,添加,现有项,选择动态库头文件,添加 对源文件文件夹右键,添加,新建项,创建一个cpp源文件 编辑源文件,调用动态库中相关功能 main.cpp

#include"abc.h"
#include<windows.h>
#include<iostream>
int main(){
	std::cout<<"5的阶乘是:"<<multiply(5)<<std::endl;
	std::cout<<"打印爱心:"<<std::endl;
	cABC abc(*);
	abc.print_love();
	system("pause");
	return 0;
}

3.添加lib文件

点击项目,属性,链接器,常规,附加库目录。将libabc项目生成的lib文件所在的目录添加进去 点击输入,附加依赖项,添加libabc生成的lib文件名称 点击启动调试,生成程序,之后会发现无法运行,因为系统找不到动态库libabc.dll

4.动态库文件使用

此时已经在testlib项目文件夹下生成了debug程序文件夹,将动态库libabc.dll拷贝到此文件夹下(系统会从程序运行目录下搜索动态库文件) 之后再次运行程序

经验分享 程序员 微信小程序 职场和发展