欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

vs环境下DLL创建和使用

程序员文章站 2024-02-14 14:13:34
...

环境:win10+visual studio2019

创建DLL文件

方式1:
1.新建动态链接库项目
vs环境下DLL创建和使用
2.
vs环境下DLL创建和使用
3.创建cpp文件DllDemo.cpp

#include "pch.h"
#include <Windows.h>

extern "C" _declspec(dllexport) void msg_show(char* content);

void msg_show(char* content)
{
	MessageBoxA(NULL, content, "", MB_OKCANCEL);
}

4.直接生成dll文件。

方式2:
1.新建空项目
vs环境下DLL创建和使用
2.
vs环境下DLL创建和使用
3.在项目属性->常规->配置类型改为动态库
vs环境下DLL创建和使用
4.创建cpp文件DllDemo.cpp

#include <Windows.h>

extern "C" _declspec(dllexport) void msg_show(char* content);

void msg_show(char* content)
{
	MessageBoxA(NULL, content, "", MB_OKCANCEL);
}

5.直接生成dll文件。

注:一般dll输出函数前需要加上extern “C”,因为C++的函数重载,所以如果不指明编译器按C语言的方式编译,则编译出来的函数名会发生变化,在动态调用DLL的时候直接使用之前生命的函数名就会返回无效,当然如果你知道C++的编译规则,直接使用编译器修改的函数名,也是可以的。

使用DLL文件

方式1:静态调用
1.创建一个空项目,添加cpp文件main.cpp

#pragma comment(lib,"DllDemo.lib")
_declspec(dllimport) void msg_show(char*);

int main(void)
{
	msg_show((char*)"ceshi");
}

2.将上面生成的DllDemo.lib文件放在exe项目工程的同一目录下,将生成的DllDemo.dll文件放在生成的exe文件的同一目录下。

方式2:动态调用
动态调用只需要dll文件,不要对应的lib文件

#include <Windows.h>
#include <iostream>

int main(void)
{
	HMODULE hdll = LoadLibraryA("DllDemo.dll");
	if (!hdll)
	{
		std::cout << "no invilad";
	}
	else
	{
		typedef void(*msg)(char*, char*);
		msg msg_show = (msg)GetProcAddress(hdll, "msg_show");
		if (!msg_show)
			std::cout << "no invalid1";
		else
			msg_show((char*)"title",(char *)"ceshi123");
	}
}
相关标签: 随手记