c的定义:
int _stdcall changevalue(int a,int b)
{
b=b+1;
return 0;
}
已经编译成dll
vb中的定义Dim i As Integer
Dim j As Integer
i = 0
j = 0
changevalue i, j
Text1.Text = j请问为什么j的值还是0?怎么让其变成1?

解决方案 »

  1.   

    return 0;return 1;return b;
      

  2.   

    C没怎么用过,不太清楚,说错了莫笑。
    C中关于传参数的情况有区别吧,好像分按值传和按地址传吧
    楼主C中的函数是不是按值传递的,所以原来的变量本身并不发生变化。
      

  3.   

    你需要把地址传入dll里面,这样才能给b的地址写值,如果传入是一个值那就没有盼头了,以前是多少还是多少
      

  4.   

    to Hassle() ,jeffzsy() 
    你的方法可行,但我目前的情况是在dll里面有一个入口函数,是定义为int的,传入若干参数后,它对某个数组重新编码了一下,然后return。
    以前是用c调用该dll的,数组确实变了,但现在vb下调用,发现参数是传进去了,但由于函数return的是数值,所以数组并没有变化。
    我搞不明白原因啊
      

  5.   

    不知道c中是怎么回事
    反正vb中你是变不了了改称;change(byref a,byref b)就行了C++中也用地质传旨的八
      

  6.   

    int _stdcall changevalue(int a,int* pb)
      

  7.   

    要C中的函数定义的不对了,你所定义的是按值传递,故达不到你所想要的效果哟
    int _stdcall changevalue(int *a,int *b)
    {
    b=b+1;
    return 0;
    }应该这样定义,定义为按地址传递,这样对变量的改变就反应出来了,也就达到阁下的要求了孤夜寒心泪