如题。
例如:Public num() as Integer

解决方案 »

  1.   

    不好意思,时间久了没来这里,不知在哪里发新帖子,借用一下地盘,谢了!本人因《混合编程语言》考试需要,需编写一程序演示两种不同语言之间的调用过程。
    问题如下:在vb中调用VC编写的DLL(其中包含一采用冒泡排序BubbleSort实现的排序过程)。
    在VB中通过ByRef传递数组名ArrayName,ByVal传递数组元素个数ArraySize。DLL编译通过,
    我将其拷到VB程序所在文件夹下,程序编译通过,但调用排序过程后,数组中的元素并未进
    行排序???
    DLL采用stdcall调用约定,且在定义文件.def中也已列出BubbleSort过程名.//DLL中的排序函数BubbleSort(已在VC环境下测试完全正确.)
    Sort_API  BubbleSort(int *ArrayName,int ArraySize)
    {
    int i,j,temp; AFX_MANAGE_STATE(AfxGetStaticModuleState());
    for(i=0;i<ArraySize-1;i++)
    for(j=i+1;j<=ArraySize-1;j++)
    if( *(ArrayName+i) > *(ArrayName+j) )
    {
    temp=*(ArrayName+i);
    *(ArrayName+i)=*(ArrayName+j);
    *(ArrayName+j)=temp;
    }

    }
    //VB中DLL声明:Public Declare Sub BubbleSort Lib "D:\Program Files\VB98\自编程序\VbCallDll\Sort" (ByRef                 ArrayName() As Integer, ByVal ArraySize As Integer)//VB中调用代码
        Dim ArrayName(0 To 9) As Integer
        Dim i, ArraySize As Integer
        
        ArraySize = 10
        '测试值
        ArrayName(0) = 19
        ArrayName(1) = 50
        ArrayName(2) = 3
        ArrayName(3) = 18
        ArrayName(4) = 6
        ArrayName(5) = 94
        ArrayName(6) = 24
        ArrayName(7) = 32
        ArrayName(8) = 47
        ArrayName(9) = 58
            
        Call BubbleSort(ArrayName(), ArraySize)
       
        For i = 0 To 9
            Print ArrayName(i)
        Next i    程序运行后,输出结果和上面赋值的情形一样。修改DLL进行测试时发现ArraySize值传递正确,
    问题似乎出现在数组的传递上。
    请赐教,谢谢!