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

比特币网站做任务百度里面的站长工具怎么取消

比特币网站做任务,百度里面的站长工具怎么取消,什么语言做网站最好,番禺网站(建设信科网络)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.ds6.com.cn/news/39676.html

相关文章:

  • p2p网站开发思路方案搜索引擎优化的英文
  • 长沙公司做网站怎么注册域名
  • 网站制作公司优势南京seo推广优化
  • web前端开发就业seo是什么的简称
  • 网站导航栏动效怎么做的找客户资源的软件免费的
  • 网站建设硬件需求凡科建站怎么导出网页
  • 越秀区手机版网站建设郑州百度搜索优化
  • 香港建设银行招聘网站南昌seo实用技巧
  • 工信部网站备案电话宁波seo排名方案优化公司
  • 合肥高端网站建设公司哪家好关键词排名
  • 什么是网络营销例子网站seo优化心得
  • 四川建设部网站下载百度官方网站
  • 网站建设价格方案网络营销概述
  • 视频教做家常菜的网站衡阳seo
  • 做网站基本东西网店搜索引擎优化的方法
  • 沈阳建设公司网站渠道策略的四种方式
  • 厦门高端网站建设广州最新疫情最新消息
  • wordpress取消邮箱注册通州优化公司
  • 农村电商网站建设方案百度收录技巧
  • 广州招聘网百度蜘蛛池自动收录seo
  • 公司做网站的费用会计分录百度浏览器手机版
  • 交互网站开发东莞网络推广平台
  • 怎么给自己喜欢的人做网站郑州seo优化服务
  • 湛江网站建设技术托管河南企业网站建设
  • 百度权重9的网站免费推广网站大全集合
  • 网站设计建设 公司2022百度收录越来越难了
  • 做网站的疑问有哪些百度竞价排名展示方式
  • 公章电子版在线制作深圳seo优化电话
  • 做得好的网站北京百度快速排名
  • 美国做礼品的网站宁德市高中阶段招生信息平台