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

wordpress站点版权设置苏州公司网站

wordpress站点版权设置,苏州公司网站,郑州400建站网站建设,个人 服务器 linux 建网站C#在和C进行交互时,有时候会需要传递结构体。 做一些总结,避免大家在用的时候踩坑。 一般情况 例如我们在C里定义了一个struct_basic结构体 1 struct struct_basic 2 { 3 WORD value_1; 4 LONG value_2; 5 DWORD value_3; 6 UINT v…

C#在和C++进行交互时,有时候会需要传递结构体。

做一些总结,避免大家在用的时候踩坑。

一般情况

例如我们在C++里定义了一个struct_basic结构体

1 struct struct_basic
2 {
3     WORD  value_1;
4     LONG  value_2;
5     DWORD value_3;
6     UINT  value_4;
7     BOOL  value_5;
8 };

这种情况在C#里调用,只需要注意数据类型对应就行了

在C#里定义如下

1  struct struct_basic
2     {
3         public ushort value_1;
4         public int value_2;
5         public uint value_3;
6         public uint value_4;
7         public bool value_5;
8     }

使用导出函数来测试一下

 1 extern "C" __declspec(dllexport) void get_basic(struct_basic basic);2 3 extern "C" __declspec(dllexport) void get_basic(struct_basic basic)4 {5     basic.value_1 = 1;6     basic.value_2 = 2;7     basic.value_3 = 3;8     basic.value_4 = 4;9     basic.value_5 = FALSE;
10 }

在C#中调用

        [DllImport("lib.dll")]public static extern void get_basic(ref struct_basic basic);static void Main(string[] args){struct_basic basic = new struct_basic();get_basic(ref basic);Console.WriteLine($"{basic.value_1}  {basic.value_2}  {basic.value_3}  {basic.value_4}  {basic.value_5}");}

输出结果如下:

包含字符串的情况

C++

1 struct struct_advanced
2 {
3     WORD id;
4     CHAR message[256];
5 };

这种需要使用MarshalAsAttribute特性来指示如何在托管代码与非托管代码之间封送数据。

UnmanagedType.ByValTStr表示 结构中大小固定的字符串
SizeConst可以指定字符数组的大小说明:
如果未指定CharSet,默认使用的是Ansi(char)。
Unicode为w_char。

C#

1     [StructLayout(LayoutKind.Sequential,CharSet=CharSet.Unicode)]
2     struct struct_advanced
3     {
4         public ushort id;
5 
6         [MarshalAs(UnmanagedType.ByValTStr,SizeConst =256)]
7         public string message;
8     };

使用导出函数测试

C++

1 extern "C" __declspec(dllexport) void get_advanced(struct_advanced* advanced);
2 
3 extern "C" __declspec(dllexport) void get_advanced(struct_advanced* advanced)
4 {
5     advanced->id = 101;
6     lstrcpyW(advanced->message, L"HelloWorld");
7 }

在C#中调用

 1  class Program2     {3         [DllImport("lib.dll")]4         public static extern void get_advanced(ref struct_advanced advanced);5 6         static void Main(string[] args)7         {8             struct_advanced advanced = new struct_advanced();9             get_advanced(ref advanced);
10             Console.WriteLine($"{advanced.id}  {advanced.message}");
11         }
12     }

输出结果:

示例代码

http://www.yayakq.cn/news/918352/

相关文章:

  • 王也扮演者优化品牌seo关键词
  • 网站建设战略小米商城wordpress
  • CP网站开发制作H5WordPress自动拼音别名
  • 网站建设服务哪个便宜网站建设160页答案
  • 电子商务网站建设与管理 学习感想云上网站做等保
  • 红河蒙自网站开发烟台汽车网站建设
  • 广东h5网站建设计算机专业主要学什么好就业
  • 网上商城网站开发与建立的意义wordpress 建站五分钟
  • 虚拟主机网站模板做音响的是哪个网站
  • 网站建设实训报告范文win10 网站建设软件有哪些
  • cms网站模板下载怎么开发自己的商城
  • 网站构建的开发费用网络推广软件费用情况
  • 现货交易平台查询windows优化大师兑换码
  • 深圳南山网站开发网站建设都需学哪些
  • 网站源码asp镇江地区做网站的公司有哪些
  • c 教程如何做网站中文企业网站设计欣赏
  • 网站反链是什么意思安徽制作网站专业公司
  • 空间站建设本地扬中网站建设
  • 做招聘网站需要资质吗wordpress后台新建慢
  • 移动端网站开发公司wordpress按修改时间排序
  • 新城免费做网站国外做家装的网站有哪些
  • wordpress分页链接设置罗湖区seo排名
  • 简单网站建设官网辽宁住房和城乡建设部网站
  • 网站内容有什么做仿牌网站
  • 现在做微信开发网站多少钱wordpress 导出
  • wordpress网站建设教程视频平面设计平台有哪些
  • 深圳欧啦啦网站建设欧亚达网站是哪家公司做的
  • 网站建设是指策划营销型企业网站应注意哪些事情(建设流层—)
  • 做推文网站除了秀米还要什么wordpress编辑优化
  • 业余做衣服的网站网站建设 精品课程