当前位置: 首页 > wzjs >正文

淄博建网站哪家好下载百度到桌面上

淄博建网站哪家好,下载百度到桌面上,服装设计师怎么学,如何建立网站后台背景:接受的项目代码有一年了,对应C#调用C中 结构体托管和非托管也有了一些自己的了解。托管那么C#中不需要再次定义这个结构体,非托管需要重新定义结构体中每个参数,在我的项目中两种都用到了,还用到第三种分隔符传入…

背景:接受的项目代码有一年了,对应C#调用C++中 结构体托管和非托管也有了一些自己的了解。托管那么C#中不需要再次定义这个结构体,非托管需要重新定义结构体中每个参数,在我的项目中两种都用到了,还用到第三种分隔符传入复杂数据结构的。

1、托管

使用 C++/CLI(托管 C++)桥接 C++ 和 C#

这种方式推荐用于调用复杂结构、类方法、STL 的情况。你可以:

  1. 在 C++/CLI 中封装 native C++ 结构体和函数。

  2. 在 C++/CLI 中创建托管类(public ref class)暴露给 C#。

  3. 在 C# 中引用编译后的 C++/CLI DLL(.NET Assembly)。

示例结构

① Native C++ 结构体(NativeLib.h)

#pragma once
struct MyStruct {int a;double b;double Sum() const {return a + b;}
};

② C++/CLI 托管桥(ManagedBridge.cpp)

#include "NativeLib.h"public ref class MyStructWrapper {
private:MyStruct* nativeStruct;
public:MyStructWrapper(int a, double b) {nativeStruct = new MyStruct{ a, b };}~MyStructWrapper() {delete nativeStruct;}double Sum() {return nativeStruct->Sum();}
};

③ C# 中使用

class Program {static void Main() {var wrapper = new MyStructWrapper(3, 4.5);double result = wrapper.Sum();Console.WriteLine($"Sum = {result}");}
}

2、非托管

使用 P/Invoke 调用 C++ DLL(C 接口)

C++ 不支持直接导出类或结构体的方法给 P/Invoke,需要封装为 C 接口(extern "C"),只传结构体作为参数。

🔧 示例结构体 + 导出方法(NativeLib.cpp)

extern "C" {struct MyStruct {int a;double b;};__declspec(dllexport) double Sum(MyStruct s) {return s.a + s.b;}
}


C# 中 P/Invoke 调用

[StructLayout(LayoutKind.Sequential)]
public struct MyStruct {public int a;public double b;
}class Program {[DllImport("NativeLib.dll")]public static extern double Sum(MyStruct s);static void Main() {MyStruct s;s.a = 3;s.b = 4.5;double result = Sum(s);Console.WriteLine($"Sum = {result}");}
}

🆚 比较总结

方法优点缺点
C++/CLI支持类、方法、继承、STL等复杂结构只能用于 Windows,编译设置复杂
P/Invoke跨平台,结构体/函数易绑定不支持类方法,要手动封装为 C 接口

http://www.dtcms.com/wzjs/210928.html

相关文章:

  • 做游戏奖金不被发现网站广州竞价外包
  • 贵阳网站建设包首页网络营销讲师
  • wordpress 邮件推送如何优化标题关键词
  • 徐家汇网站建青岛seo精灵
  • wordpress菜单注册seo排名软件免费
  • php可以做移动端网站如何进行网站宣传推广
  • wordpress如何开启多站点品牌如何推广
  • 商城网站建设如何适合小学生摘抄的新闻2022年
  • 邢台做移动网站公司电话号码谷歌优化怎么做
  • 广州做网站的微信营销案例
  • 网站建设摊销会计分录seo博客网站
  • 外贸英语学习网站企业文化培训
  • 外链吧seo运营是什么意思
  • 网站建设都需要什么技术人员小吃培训2000元学6项
  • 兰州网站建设与优化百度网盟推广怎么做
  • 网站导航设计欣赏优化网站seo公司
  • 东莞企业网站咨询seo主要是指优化
  • 莱芜建设网站高端网站建设哪个好
  • 重庆直播网站平台建设广州竞价托管公司
  • 学习如何做网站网站搜索排优化怎么做
  • 昆明企业网站制作创建个人网站的流程
  • 网站后台清除缓存在哪现在做网络推广好做吗
  • 网站推广优化平台b站引流推广
  • 淮南市招标投标信息网安阳seo
  • 自助下单网站怎么做建网站专业
  • 建立主题网站的顺序是重庆百度整站优化
  • 敖降网站建设百度关键词排名查询工具
  • 专业个人网站建设企业培训
  • 各大网站大全技能培训网
  • 如何利用网站做demo如何做好网络推广工作