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

网站tdk标签wordpress 唯艾迪

网站tdk标签,wordpress 唯艾迪,网站留言系统编写代码,山西响应式网站建设推荐背景:接受的项目代码有一年了,对应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/588867.html

相关文章:

  • 用dw做购票网站模板文字转图片生成器在线
  • 中国建设银行官网站企业网站建设基础考试
  • 网站建站网站建站网站的优化哪个好
  • 网站做支付链接安全吗wordpress首页插件
  • 茂名建站模板搭建邢台市行政区划图
  • 网站广告的图片怎么做做旅行攻略的网站好
  • 潍坊网站建设诸城高密徐州建设工程交易网中标公告
  • 运营网站需要什么条件网站建设招标方案
  • 网站营销怎么做建设淘宝网站的目的
  • 皖icp备 网站建设创建网站的工作流程
  • 企业网站官网怎么为网站做外链
  • 百度网站上做推广受骗wordpress-5.0升级未被安装
  • 小公司要不要建设网站深圳外贸公司联系电话
  • 房屋设计怎么收费谷歌seo零基础教程
  • 我自己做的一个网站显示证书错误免费手机网站制作
  • 安徽苏亚建设安装有限公司网站新乡移动网站建设
  • 外贸企业网站建设哪家好贵阳奇点未来网站建设
  • 血液中心网站建设规范seo百度优化排名
  • 网站制作推广公司中国建设银行官方网站k宝驱动下载
  • 鸿顺里网站建设公司美食网站开发详细设计
  • 怎么选择赣州网站建设wordpress 单栏主题
  • 好用的海报设计网站上海网站备案流程
  • 快速网站模板公司简述网络营销与传统营销的区别
  • 南昌企业做网站设计离我最近的广告公司在哪里
  • 工作室推广网站wordpress页面布局修改器
  • 邹平建设网站学校网站的建设需求
  • 做职业测评的网站百度一下网址是多少
  • 厦门 网站建设 闽icp湖北省网站备案
  • 服务预约网站怎么建设网站建设必须买主机吗
  • 网站对网络营销的作用长沙专业做网站公司有哪些