函数原型:
int func(int *p1, int p2) ;
p1返回一数组.在c#中声明
private static extern int func( ref int[] p1, int p2) ;
但调用后不能返回数组,使用p1[0]时出错。不知该如何处理?请指教
int func(int *p1, int p2) ;
p1返回一数组.在c#中声明
private static extern int func( ref int[] p1, int p2) ;
但调用后不能返回数组,使用p1[0]时出错。不知该如何处理?请指教
解决方案 »
- 页面调试时,显示无法显示该页面,请教各位高人!
- 关于用Marshal类和IntPtr分配非托管内存的问题(急!若帮忙解决,会加分的)
- ???
- C#中怎么调用非托管的DLL,参数为双指针的结构体
- 安装程序中服务的注册问题
- 怎么打开同局域网中其它电脑的pdf文件(c#网页)
- Form 中的textbox能否实现google下拉动态查询的功能!(类似ajax)
- 字符串序列方式填充问题
- 如何定义自已设置的打印纸张至"系统打印纸张"列表中!
- 30路串口接收数据,开始每一个串口已经绑定串口事件,那接收端怎么用一个Datarecived事件区分哪个串口的啊
- 我不要抽象类和接口的区别,我要他们的实用性,非常感谢。有没有高手能说清楚。。。。。
- 有这样一个数列:分子成等差数列,分母成等比数列,求这个数列的和S
unsafe, this key word
private static extern int func( int[] p1, int p2) ;
不用加关键字:ref调用函数时:
int p2 = 10;
int[] p1 = new int [20];
func(p1, p2);
func中对p1的修改有效。
注意:一定得先int[] p1 = new int [20];,给p1引用初始化,否则p1=null,错误。
private static extern int func( [In,Out] int[] p1, int p2) ;这种情况下数组长度不能变化.
{
for( int i = 0;i < 4;i ++ )
{
p1[i] = i;
} for( int i = 0;i < 4;i ++ )
{
CString strMsg;
strMsg.Format("index %d=%d", i, p1[i]);
//AfxMessageBox(strMsg);
} return p2;
}C#中调用:[DllImport("Test.dll")]
extern static int func(int[] p1, int p2);private void button1_Click(object sender, System.EventArgs e)
{
//TestMessageBox("aaa"); int[] p1 = new int[4]; func(p1, 0);
for(int i =0;i<p1.Length;i ++)
{
MessageBox.Show(p1[i].ToString());
}
}