VC dll中接收数组问题

我用VC编写一个标准dll供VB调用
现在遇到问题如下

大概是VB调用函数,那函数的参数为long型数组,所以VB中使用ByRef方式传值,而dll中函数功能就是接收这个VB传过来的数组,并返回这个数组的元素个数。就这么简单。

我在百度里边对分值从未有兴趣过,所以谁帮我解决了我几乎可以将所有分给他。先给上30,不够再补
我知道
long data[5];
元素个数=sizeof(data)/sizeof(data[0]);

我的问题是传过来的数组

不知道VB是如调数组的。
如果 long data[5];
就是 sizeof(data)/sizeof(data[0]);

如果VB分配内存和C一样的话。

我很少用VB了,所以不清楚
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-01-06
可以明确的告诉你,用C/C++不能实现你想要的函数。C/C++语言的中,如果要传递数组,需要传递数组的首地址,如果你向函数只传递了一个只有10个元素的数组的首地址,而在这个函数中不会知道这个数组的元素个数,甚至有时你引用了这个数组的第11个元素都是没问题的,但事实这第11个元素显然不是正确的,但是仍然可能有效。例子如下:
int func(int arr[])
{
int b;
b = arr[11];
return b;
}

int main()
{
int a[10];
func(a);
return 0;
}

上面的程序可以运行,这说明C/C++不能知道数组元素的个数,你从VB中向VC的DLL中传递数组也是一样的。

PS:在func函数中不可以用sizeof(arr)/sizeof(arr[0])的方法取得数组元素个数,因为sizeof(arr)这时候恒等于sizeof(int*),也就是4。本回答被提问者采纳
第2个回答  2010-01-07
没有想像中的那么难。
参考下面这个例子:
http://zhidao.baidu.com/question/86890772.html
相似回答