网络上查找到的几乎都是 需要提前固定知道 接收字符(字节)数据的大小的方式,现在的数据大小方式 不需要提前知道如下

思路:

1 .C++,返回变长 指针或者字节 的地址给C# 接收,同时返回 该地址的数据长度给C#。

2 .C# 通过C++ 返回的数据长度,创建接收数据的byte[] 长度。

3.C# 通过返回的地址 拷贝读取数据。

C++  代码如下:

extern "C"      __declspec(dllexport)   char  *  GetFileByteArray(wchar_t * BinfilePath, wchar_t *BinfileName,int indexFile, int * length)
{ char *chBinfilePath= nullptr, *chBinfileName = nullptr;
wchar_tTranstoChar(BinfilePath, &chBinfilePath);
wchar_tTranstoChar(BinfileName, &chBinfileName); char a[] = "13345zh中文 hello";
//前提条件需要 返回变长的指针
int fileCount = sizeof(a); char *att = new char[fileCount];
memcpy(att, a, fileCount); *length = fileCount-1; // C#获得长度 free(chBinfilePath);
free(chBinfileName); return att;// C# 获得指针 }

C# 处理如下:

        [DllImport("BASECORELIBRARY.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall)]
public static extern IntPtr GetFileByteArray(string BinfilePath, string BinfileName, int indexFile,ref int length); int length = ; IntPtr piBuf = InvokeDLL.GetFileByteArray(newFilePath, toBinName, , ref length); byte[] arrayBuf = new byte[length];
Marshal.Copy(piBuf,arrayBuf,, length); string st= Encoding.Default.GetString(arrayBuf);
Console.WriteLine(st);

输出结果: 13345zh中文 hello

最新文章

  1. Openfire用户密码加密解密
  2. .net平台下垃圾回收机制
  3. struts2--convention-plugin--零配置
  4. IT公司100题-tencent-打印所有高度为2的路径
  5. Android 之 2048 的游戏逻辑分析
  6. json-lib date对象转json ,加入自定义日期格式处理
  7. android 下载instagram动态中图片的demo
  8. C#、.NET和ASP.NET三者之间的区别
  9. 绘制数据图表的又一利器:C3.js
  10. 微软企业库DBBA的研究
  11. windows服务用脚本无法启动
  12. Go 并发随机打印1-n
  13. 【UML 建模】活动图介绍
  14. Redis Sentinel主从高可用方案
  15. springAOP之代理
  16. How to Reset VW Steering Assist 1S1909144P with OBDSTAR X300 DP
  17. ESP8266擦除工具完整安装
  18. 《Kubernetes权威指南》——网络原理
  19. js 正则判断字符串下划线的长度
  20. Myeclipse代码格式化

热门文章

  1. Windows平台为 ElasticSearch 6.x 安装 Head 客户端插件
  2. SpringBoot配置文件敏感信息加密-jasypt
  3. stm32F103片上串口USART1通信实验
  4. quartz2.3.0(十四)trigger触发器优先级排序
  5. SSH协议介绍
  6. C#的WebApi 与 EasyUi的DataGrid结合生成的可分页界面
  7. Docker学习笔记(一)—— 概述
  8. asp.net mvc 使用bootstrap的模态框插件modal
  9. 当ajax都完成后执行方法
  10. Linux(常用)命令