C#怎么传值进去c++unsigned char *
作者&投稿:江话 (若有异议请与网页底部的电邮联系)
struct fangfa
{
public byte[] id; //数组,C++中unsigned char等价于byte类型,即8位无符号
public bool type;
public uint sum;
}
解释:
1. C#中结构体成员是有访问权限限定符的,默认为private,要想在外面访问,故都写成public。
(其实C++中也有,默认为public而已)
2. C#和C++中结构体成员在定义时均不允许赋初值。故数组定义时没有实例化。
3. C#中数组与C++的差别比较大,是引用类型,而引用类型是要实例化的。即结构体成员中的id相当于C++中指向数组的一个指针,要用new来分配数组的真正存储空间,故使用此结构体的语句示例如下:
fangfa f;
f.type = true;
f.sum = 100;
f.id = new byte[10]; //数组中有10个元素
f.id[0] = 1;
IntPtr[] sbs = new IntPtr[2];
这样
~
~
~
~
~
~
~
或
IntPtr
~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
张山乳酸: C++传出一个 char* 是不会错的.你C# 接收的时候,要用 IntPtr 来接收.这是 char* 这个指针的地址.读取这个地址的值,就是你要的字符了
衡南县17793748035: c#传值到c++结构体?
张山乳酸: C#定义如下结构体,传参数时直接传下面的结构体即可 public struct NetDataPacketHeader { int iLen; // 数据包总长度 [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)] string chProtocolFlag; // 协议标志 int iCommandFlag; // 命令标...
衡南县17793748035: C#如何在当前页面传值 - ?
张山乳酸: 传值的方式常见的有两种,一种是属性传值,一种是构造函数传值;假设有两个页面,A页面和B页面,方法一:在A页面点击事件时实例化B页面,那么可以再B页面中定义一个变量,在A页面实例化的时候就可以设置B页面中的变量的值,这样就传递过来了A页面的值;方法二:在B页面的构造函数中加入参数,就是带参构造函数,那么在实例化B页面的时候就可以直接把A页面的值设置为B页面的参数里面,这样也传递过来值了
衡南县17793748035: 请问C#怎么调用C++的dll,把字节数组(字节数组byte[]作为形参)传入C++? - ?
张山乳酸: 我混混经验.在项目那里,可以引用 需要的 dll 文件,然后在程序中,using就行了,然后就可以调用这个dll中的函数了.C#中,可以定义一个byte数组,然后赋值,传入就行.
衡南县17793748035: c# 中如何实现对象值传递? - ?
张山乳酸: copyto(),clone()都可以
衡南县17793748035: C#中两个窗口互传值 - ?
张山乳酸: 方法一: 首先,在原窗体中代码: public partial class Form2 : Form{public Form2(){InitializeComponent();} private void button1_Click(object sender, EventArgs e){Form3 frm = new Form3(textBox1);frm.Show();}}接下来传值到第...
衡南县17793748035: c#和c++的dll怎么参数传递 - ?
张山乳酸: 这个问题 我可以非常明确地告诉你,C#无法直接调用这种参数的函数,C#中你描述的那种二维数组,本质上跟一维数组一致.倒是single[][]跟float**是类似的,但是也不能直接传递.然后具体说说 float* arr arr为指向float型的指针 single[] arr arr...
衡南县17793748035: 如何在C#下传递字符串数组到C++的dll文件 - ?
张山乳酸: 如果有中文的话,在 C# 端使用 CharSet = CharSet.Unicode C#端: [DllImport("capturePicture.dll",CharSet = CharSet.Unicode, EntryPoint = "ReceiveStrArr")] public extern static int SendStrArr(string[] sendS, int arraySize);C++端:extern ...
衡南县17793748035: 如何把C#中的byte[]数据传到C语言写的dll函数中 - ?
张山乳酸: 看你DLL了,要是标准动态链接库的话使用以下方法: 1 2 3usingSystem.Runtime.InteropServices; [DllImport("c:\\abc.dll", EntryPoint="函数名")] publicstaticextern数据类型 函数名 (数据类型 x, 数据类型 y, .... 参数); 如果您的DLL是com组建的直接应用DLL就ok了~ 祝你好运~
衡南县17793748035: C#多个项目之间如何传递值呀? - ?
张山乳酸: 1、添加引用,使用全局变量或者是在构造函数中传递参数; 2、写一个公共类或是接口,用它来传递参数; 3、使用事件和委托来传递参数; 希望对你有帮助,如有疑问请追问或是Hi