当前位置: 首页 > 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.shuangfujiaoyu.com/news/2368.html

相关文章:

  • 网站备案多少钱seo关键词排名优化是什么
  • 专业提供深圳网站设计公司推广系统
  • 网商园专业网店货源批发长春seo公司哪家好
  • maryjane动画制作公司网站襄阳seo培训
  • 做网站选择系统关闭站长工具seo综合查询
  • 淘宝运营培训课程靠谱吗网站seo外包公司有哪些
  • 这样做自己的网站发广告去哪个平台
  • 长春网站设计哪家好发布会直播平台
  • wordpress建视频网站属于网络营销的特点是
  • 合肥网站搭建数据推广公司
  • 刚开始做网站布局很吃力 怎么办北京网站优化培训
  • 用aspx做的网站网页设计参考网站
  • 惠阳开发网站建设做网站的网络公司
  • 如何提高一个网站全网营销是什么
  • qifeiye做的网站如何市场推广工作内容
  • 企业网页设计案例什么是seo搜索
  • 温州专业营销网站公司平台关键词排名优化
  • wordpress 过滤词无锡网站建设方案优化
  • 河东做网站公司口碑营销经典案例
  • 县级旅游局网站建设谷歌浏览器下载手机版app
  • 做金融网站看那些素材聚合搜索引擎接口
  • 网站建设及服务合同书潍坊百度关键词优化
  • 网站怎么设计seo关键词排名优化制作
  • phpcmsv9手机网站模板接广告推广的平台
  • 和林格尔网站制作代写文章的平台有哪些
  • 网站分享平台推广电话
  • 教做美食的网站站长之家0
  • 西安做网站哪里便宜站长工具seo综合查询关键词
  • 手机网站怎么做seo青岛网站建设有限公司
  • 做外国网用哪些网站百度推广培训班