相关数据包
vs2022 c++实现dll创建和调用vs2022 c++实现dll创建和调用
文件创建使用vs2022的c++dll模板创建一个文件,其中模板信息如下;
12345678910111213// dllmain.cpp : 定义 DLL 应用程序的入口点。#include "pch.h" // 预编译头文件BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) { switch (ul_reason_for_call) { case DLL_PROCESS_ATTACH: // DLL 被加载到进程时调用 case DLL_THREAD_ATTACH: // 新线程被创建时调用 case DLL_THREAD_DETACH: // 线程被终止时调用 case DLL_PROCESS_DETACH: // DLL 从进程中卸载时调用 break; } return TRUE; // 返回 TRUE 表示已成功处理}
新建一个头文件以及源文件
头文件的代码如下:
12345678910111213141516171819202122232425262728293031323334353637#pragma once// 检查是否在编译 DLL#ifdef _EXPORTING#define _DLL_API __declspec(dllexport) // 导出函数#else#define _DLL_API __declspec(dllimport) // 导入函数#endif#ifdef __cplusplus// 定义一个 C++ 类 Dll_Classclass Dll_Class{public: Dll_Class(); // 构造函数 ~Dll_Class(); // 析构函数 // 虚拟函数,执行加法操作 virtual int Addition(int a, int b);};#endif// 使用 C 链接方式,防止名称重整extern "C"{ // 创建 Dll_Class 的实例并返回指针 _DLL_API Dll_Class *CreateObject(); // 释放 Dll_Class 对象的内存 _DLL_API void ReleaseObject(Dll_Class *pObject); // 返回两个整数的乘积 _DLL_API int Multiplication_TypeC(int a, int b); // 返回两个整数的和 _DLL_API int Addition_TypeC(int a, int b);}
源文件如下:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657// MathLibrary.cpp : 定义 DLL 的导出函数#include "pch.h" // 在 Visual Studio 2017 及更早版本中使用 stdafx.h#include
之后接着选择 生成->生成解决方案
生成之后,你可以在x64这个文件夹下找到生成的dll和lib文件
隐式调用Dll重新创建一个c++的空项目或者控制台应用
然后生成一个源文件,代码如下:
12345678910111213141516171819202122232425262728// MathClient.cpp : Client app for MathLibrary DLL.// #include "pch.h" Uncomment for Visual Studio 2017 and earlier#include
然后生成,不出意外会显示这个
只需要去刚才生成的dll文件下,把 .dll和.lib文件拷贝到当前文件下就可以了
再次运行