c# 调用 c++代码
摘要
需要三个项目
- c++代码 CPPProject
- c++包装器 CPPWrap
- c#包装器 CSharpWrap
CPPWrap
创建c++动态链接库项目
配置属性 - 高级 - C+/CLI属性 ,依次设置公共语言运行时支持、.NET目标框架(设置为需要的.net环境对应的版本即可)
调整公共语言运行时
调整项目属性 - C/C++ - 语言 - 符合模式调整为否
随后需要依次将对应的c++类做一层包装,将c++类中的公共属性通过包装器暴露出去即可
例:
//注意需要ref
public ref class AgentWrap
{
public:
//模拟代码,可以改成c++项目中的类型
Agent *agent;
std::vector<DetectedSheepRow> get_DetectedSheep();
void UpdateDetectedSheepLocation(int i, int timestep, Vector2f location);
void add_DetectedSheep(DetectedSheepRow newRow);
};
CSharpWrap
直接引用对应的CPPWrap,便可以直接在c#代码中使用c++对应的类型了
引用c#类型
c++中可以通过引入.net对应的名称空间来使用.net中的类型
// 通过命名空间引入.NET类型
using namespace System;
using namespace System::Collections::Generic;
// .NET动态数组
List<Double>^ datas = gcnew List<Double>();
datas->Add(0.1);
datas->Add(0.2);
datas->Add(0.3);
datas->Add(0.4);
datas->Add(0.5);
留待后查,同时方便他人
联系我:renhanlinbsl@163.com
联系我:renhanlinbsl@163.com
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2021-06-17 mfc 控制面板添加删除程序
2021-06-17 mfc多线程