VS2022 C/C++ DLL封装

1、创建C++ DLL项目工程

第一步:打开VS2022,选择创建新项目。

第二步: 选择“动态链接库(DLL)”。

 第三步:设置项目名称和存放路径。

2、正式编码

第一步:把工程中的模板文件全部删除。

 第二步(根据需求可跳过):鼠标右键项目,选择属性,配置C/C++语法标准并应用。

 第三步:取消预编译头。

 第四步:添加预处理器定义(宏定义)DLL_BUILD,后面编写头文件用得上。

 第五步:创建自己代码模块(.h、.cpp)。

 第六步:编写头文件(.h)。

 头文件模板格式:

//当前头文件编译时只能扫描一次
#pragma once

//dll部署操作
#ifdef DLL_BUILD
//标识为导出操作
#define DLL_API _declspec(dllexport)
#else
//标识为引入操作
#define DLL_API _declspec(dllimport)
#endif

//编译器识别
#ifdef __cplusplus
//C++环境,加上命名空间my(能避免重名冲突)
namespace my {
#else
//C语言环境,告诉编译器安装C语言风格编译、不支持函数重载
extern "C" {
#endif
    //函数的声明
	DLL_API void print();
}

 效果图:

 第六步:编写源代码(.cpp)。

 源文件模板:

#include "MyLib.h"

//编译器识别
#ifdef __cplusplus
//C++命名空间my中,函数实现
#include<iostream>
void my::print()
{
	std::cout << "Hello World!...C++";
}
#else
//C语言函数实现
#include<stdio.h>
void print()
{
	printf("Hello World!...C");
}
#endif

效果图:

 3、生成LIB和DLL(快捷键Ctrl+B) 

 

4、封装SDK

第一步:创建空文件夹,分别创建include(存放.h)和lib(存放lib和dll)文件夹

5、检验函数 

第一步:创建新的空项目测试。

 第二步:把新项目设置为启动项目。

 第三步:将封装的SDK导入项目中。

 第四步:进入项目配置,导入SDK头文件路径。

 第五步:导入SDK的lib库,设置lib库路径,然后选择lib。

  第六步:添加main.cpp,添加main函数。

#include<MyLib.h>

int main() {
	my::print();
	return 0;
}

效果图:

 

  • 6
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
下面是一个简单的示例,演示如何使用 C++/CLI 封装 ActiveX 控件 VSFlexGrid: 1. 创建一个新的 C++/CLI 类库项目。 2. 在项目中添加一个新的 Managed 类,例如“VSFlexGridWrapper”。 3. 在该类中,添加一个私有变量来保存 VSFlexGrid 的 COM 对象: ``` private: AxVSFlexLib::AxVSFlexGrid^ m_flexGrid; ``` 4. 在该类的构造函数中,使用 COM 组件对象模型 (COM) 方法创建 VSFlexGrid 的实例,并将该实例分配给私有变量: ``` VSFlexGridWrapper() { // Create a new instance of VSFlexGrid m_flexGrid = gcnew AxVSFlexLib::AxVSFlexGrid(); m_flexGrid->CreateControl(); } ``` 5. 在该类的析构函数中,释放 VSFlexGrid 的 COM 对象: ``` ~VSFlexGridWrapper() { // Release the COM object if (m_flexGrid != nullptr) { delete m_flexGrid; m_flexGrid = nullptr; } } ``` 6. 在该类中添加公共方法,这些方法将允许 .NET 客户端应用程序与 VSFlexGrid 控件进行交互。例如,以下方法将在 VSFlexGrid 控件中添加一行数据: ``` void AddRow(array<String^>^ rowData) { // Get the underlying VSFlexGrid object AxVSFlexLib::IVSFlexGrid^ flexGrid = m_flexGrid->GetOcx() ; // Add a new row to the grid flexGrid->Rows->Add(); // Set the data for the new row for (int i = 0; i < rowData->Length; i++) { flexGrid->TextMatrix[flexGrid->Rows->Count - 1, i] = rowData[i]; } } ``` 7. 在“项目”菜单中选择“生成”以编译项目。在编译成功后,将生成一个 .dll 文件,其中包含封装VSFlexGrid 控件。 8. 在客户端 .NET 应用程序中,将该类库添加为引用,并使用封装VSFlexGrid 控件的公共方法进行交互。例如,以下代码将在 VSFlexGrid 控件中添加一行数据: ``` VSFlexGridWrapper^ flexGrid = gcnew VSFlexGridWrapper(); array<String^>^ rowData = gcnew array<String^> { "1", "John", "Doe" }; flexGrid->AddRow(rowData); ``` 以上代码只是一个简单的示例,具体实现可能会因 VSFlexGrid 控件的特性而有所不同。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

以奖代补

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值