C++动态链接库的编译和调用

来源:互联网 发布:中国古典音乐 知乎 编辑:程序博客网 时间:2024/06/14 06:17

1、 这里我们主要讲动态链接库的编译,为了方便系统内存的调用,减小系统运行的内存空间,引入了动态链接库的方法。
这里首先创建一个dll的工程,目的是创建一个dll.
2、这里我们在CPP文件中创建一个函数
DLL_API void MyPrint()
{
std::cout << “create a dll” << std::endl;
}
用来做调用者调用测试。为了防止C++调用 的重载机制,这里我们需要在头文件中加入external “C”
也就是 extern “C” DLL_API void MyPrint(void);

3、编译一下,将会产生我们需要的dll.dll文件。

4、创建一个工程TestDll用来调用我们之前生成的dll.dll中的函数
5、这里我们需要将之前生成的dll.dll文件放在TestDll文件的debug文件夹下。
6、函数的调用

include “stdafx.h”

include “windows.h”//这里一定要添加,调用window的API

typedef void(*DLLFUN)(void);//定义一个空指针

int _tmain(int argc, _TCHAR* argv[])
{
HMODULE hdll = LoadLibrary(L”dll.dll”);//动态的加载一个动态链接库
if (!hdll) //判断动态链接库是否存在
{
return -1;
}
DLLFUN fun = (DLLFUN)GetProcAddress(hdll, “MyPrint”);//调用需要使用的函数MyPrint 函数
fun();
FreeLibrary(hdll); //释放动态链接库
return 0;
}

产生的结果如下

0 0
原创粉丝点击