把int[]数组当成一个参数从C++传到C#里...不过我这么说却不知道怎么做,你既然能传递一个参数想来传递个数组也不难吧
解决方案 »
- 求教一个问题的解法
- 急求!!各位高手帮帮忙吧 C# UDP 广播的实现问题
- 新手问题,这个效果的控件如何实现?
- C# 为什么打印预览能弹出对话框,但是没有显示要打印的东西呢
- 用C#如何做出QQ相册样的功能。
- ServiceController类如何取得远程计算机上的服务
- 我的是winform程序,本地的程序,连接数据库字符串写在本地程序中,可以访问网络上的sql数据库吗?有人说sql网络访问只限于局域网,是吗
- 再次提问,高手帮忙,C#调用vc++动态链接库问题
- 使用Setup Factory 7.0打包遇到的问题
- 菜鸟求救:为什么IIS里打不开程序?解决立即给分!!!!急急急急急急急!!!!
- VWD中能够使用三层架构编码吗?
- C# 生成ppt文件
int[] value = new int[10];
for(int i=0;i <10;i++)
{
value[i]=i;
} 回答:你在哪里的资料看到 C# 的内存地址是不连续的?
你试试就知道了
Add([in]int size,[in,size_is(size)]int a[],[out]int *ResultValue) // 提供两个参数
IMath.Add(10,ref value[0]);看来我还是没有明白楼主的意图啊...
*ResultValue是返回结果。
我失误,应该是
int Value = 0;
IMath.Add(10,ref value[0],out value);
这不是关键地方,关键是输入数组value在组件中value[0]是地址是对的,value[1]就有问题了
另外要用和C/C++一样的数组自己用Marshal申请内存去.
using System.Drawing;
unsafe class test
{
static void Main ()
{
int[] arr = new int [10];
fixed (int* ptArr0 = &arr[0])
{
int* ptArr = ptArr0;
for (int i=0;i<arr.Length;++i)
{
arr[i] = i;
}
for (int i=0;i<arr.Length;++i)
{
Console.WriteLine ("{0} @ Addr:0x{1:X}",*ptArr,(uint)ptArr);
ptArr++;
}
}
}
}输出:0 @ Addr:0x1C129B4
1 @ Addr:0x1C129B8
2 @ Addr:0x1C129BC
3 @ Addr:0x1C129C0
4 @ Addr:0x1C129C4
5 @ Addr:0x1C129C8
6 @ Addr:0x1C129CC
7 @ Addr:0x1C129D0
8 @ Addr:0x1C129D4
9 @ Addr:0x1C129D8怎么不连续了?