我在VB6中写的 DLL :
Sub GetRaininfo(ByRef para1() As Single) '可以传出值
For i = 0 To 9
para1(i) = i * 10
Next i
End Sub=============================================================
那么:我在C#中,引用这个DLL后,
它的接口为 GetRaininfo(ref System.Array para1)=============================================================
使用方法此,
int i, arrLen = 10;
Single[] dp1 = new Single[arrLen];
for (i = 0; i < arrLen; i++) { dp1[i] = 0; }
testDLL.testDLClass DLL_DB = new testDLL.testDLClass(); Array aP1 = (Array)dp1 ;// Array.CreateInstance(typeof(Single), dp1.Length);
DLL_DB.GetRaininfo(ref aP1);// aP1返回值仍然是0
Single oneValue = aP1[3]; // 返回值仍然是0 ,应该是20才对,为什么??
Sub GetRaininfo(ByRef para1() As Single) '可以传出值
For i = 0 To 9
para1(i) = i * 10
Next i
End Sub=============================================================
那么:我在C#中,引用这个DLL后,
它的接口为 GetRaininfo(ref System.Array para1)=============================================================
使用方法此,
int i, arrLen = 10;
Single[] dp1 = new Single[arrLen];
for (i = 0; i < arrLen; i++) { dp1[i] = 0; }
testDLL.testDLClass DLL_DB = new testDLL.testDLClass(); Array aP1 = (Array)dp1 ;// Array.CreateInstance(typeof(Single), dp1.Length);
DLL_DB.GetRaininfo(ref aP1);// aP1返回值仍然是0
Single oneValue = aP1[3]; // 返回值仍然是0 ,应该是20才对,为什么??
解决方案 »
- 用Microsoft.Office.Interop.Word 从word中获取图片
- C# udp文件传输问题?
- System.Timers.Timer 和 System.Windows.Forms.Timer的区别
- c#,可能很简单的一个问题!!!!!
- 为什么会出现对象未实例化
- 请问如何将CookieContainer 带入WebBrowser 中使用,达到共享同一Session的目的?
- 请教关于DataGrid分页
- 自定义控件问题
- [求助] 获取图片失败,图片地址以app.qlogo.cn开头
- 请教关于加载一张Disable的图片的问题.
- 如何删除ITCast学习大本营中我收藏的课程
- 这样的功能怎么实现?
<== 0 乘以 任何数都为0 ...,你把所有成员都是赋值为0的
Sub GetRaininfo(ByRef para1() As Single) '可以传出值
dim i as integer
For i = 0 To 9
para1(i) = i * 10
Next i
End Sub
Sub GetRaininfo(ByRef para1() As Single) '可以传出值
For i = 0 To 9
para1(i) = i + 10
Next i
End Sub C#中:
DLL_DB.GetRaininfo(ref aP1);// aP1返回值仍然是0
Single oneValue = aP1[3]; // 返回值仍然是0 ,应该是20才对,为什么??
DLL_DB.GetRaininfo(ref aP1);
Single oneValue = aP1[3];你自己测试一下吧(没有你的DLL)。
public void Test()
{
testDLL.testDLClass DLL_DB = new testDLL.testDLClass();
float[] a = new float[10];
for (int i = 0; i < a.Length; i++)
a[i] = 0;
DLL_DB.GetRaininfo(ref a);
Console.WriteLine(a[3]);
}
你都设成0了,当然结果也都是0了
Single[] dp1 = new Single[arrLen];
for (i = 0; i < arrLen; i++) { dp1[i] = 0; }
//testDLL.testDLClass DLL_DB = new testDLL.testDLClass();
工程1.Class1Class c = new 工程1.Class1Class();
Array aP1 = (Array)dp1;// Array.CreateInstance(typeof(Single), dp1.Length);
c.GetRaininfo(ref aP1);// aP1返回值仍然是0
Single oneValue =(Single ) aP1.GetValue(3); // 得到30啊
ps:1.vb6精简版真小,才5.8m
2.vb6的dll 居然c#里可以直接引用,果然ms自己人的东西很照顾