vs下动态链接库文件的创建以及动态链接库在程序中使用

要创建动态链接库文件(dll),就要先建立一个动态链接库工程。vs下就是建立一个win32 Console Application(win32 控制台应用工程),然后设置application setting为dll。这样就建立了一个dll的工程。


在工程中建立一个头文件并对应建立一个源文件。在头文件中放入函数的声明,包括要导出的接口函数(即能被调用该dll的程序使用的函数)。

如:

头文件 Antspro_QT.h

#include <string>

using namespace std;

#ifndef ANTSPRO_QT_H
#define ANTSPRO_QT_H

extern "C"{
	__declspec(dllexport) void __cdecl print(const char* msg);
};

#endif

这样就声明了该dll的一个导出接口函数为print,接受一个常量字符创的值。


然后在对应的源文件中定义该函数的实现(注意包含stdafx.h头文件)

如:

#include "stdafx.h"
#include "Antspro_QT.h"
#include <fstream>
#include <iostream>
#include <string>

using namespace std;

extern "C" __declspec(dllexport) void __cdecl print(const char *msg)
{
	cout << msg << endl;//author CSDN iaccepted   凌风
}


然后编译一下工程,就会在工程目录下的debug或者release(根据个人选择)文件夹下找到Antspro_QT.dll和相应的Antspro_QT.lib两个文件


如上图的第一个和最后一个,然后把这两个文件拷贝出来放到要使用的工程下的目录中,在最后发布的时候别忘了将dll文件拷贝的release文件夹下。


然后就是在项目中使用该dll文件,方法也很简单,主要是加载一下该dll然后获得其中的接口函数,然后就可以像使用本地函数一样使用该dll中的函数了。


typedef void(*pfunc)(const char *);

void test(){
	HINSTANCE hDll;

	hDll = LoadLibrary("Antspro_QT.dll");

	pfunc print = (pfunc)GetProcAddress(hDll, "print");

	print("hello world!\n");
}

使用如上,HINSTANCE是定义在windows.h头文件中的宏,通过LoadLibrary来获得该dll文件的句柄,然后同过GetProcAddress函数来获得暴露的接口函数的函数指针,然后就可以像使用本地函数一样使用该函数的功能了。上面的一句typedef是定义了一个函数指针类型,该类型名为pfunc为一个函数指针,指向一个参数为const char *返回值为void的函数。


Ok,上面就是一个dll文件的创建和使用全过程。


发布了222 篇原创文章 · 获赞 44 · 访问量 63万+

猜你喜欢

转载自blog.csdn.net/IAccepted/article/details/28442663
今日推荐