日期:2014-05-17  浏览次数:20954 次

C#调用C++编写的dll时遇到的声明问题
假设C/C++中有这样一个函数:

 int num(int add,long start,int n,float *val,int *mark),val和mark‘代表数组,

我在C#中声明如下:

[DllImport("xxx.dll"),EntryPoint="num"]

static extern int num(int add,int ch,int n,float[] A,int[] B),大家看这样正确吗?多谢!


------最佳解决方案--------------------
[DllImport("xxx.dll"),EntryPoint="num"]

static extern int num(int add,int ch,int n,[In,Out]float[] A,[In,Out]int[] B)
In 还是Out 根据需要

------其他解决方案--------------------
你去看下PINVOKE的知识,关于数组。结构体如何传递值以及使用方法都有介绍
------其他解决方案--------------------
现在很急,希望大家多多帮忙啊!!!
------其他解决方案--------------------
static extern int num(int add,int ch,int n,ref float A,ref int B);

------其他解决方案--------------------
如果声明static extern int num(int add,int ch,int n,ref float A,ref int B);
那么我在C#中怎么调用这个函数?
------其他解决方案--------------------
引用:
C# code
?



1

static extern int num(int add,int ch,int n,ref float A,ref int B);

如果这样声明的话,我在C#中怎么调用这个函数啊?
------其他解决方案--------------------
数组前加ref
------其他解决方案--------------------
本贴可以结束啦,使用我写的声明经验证是正确的,多谢大家!!