动态库的函数原型MyFunc(char *data);
其中data的赋值是:
CString temp;
strcpy(data,temp);delphi中测试程序中代码:
data := pchar;
……
data :=StrAlloc(512);
ZeroMemo(data,512);
MyFunc(data);
---------------------
调试动态库时data是有值的,但是直接运行的话,data的值是空的,就是没传过来。请问是怎么回事。

解决方案 »

  1.   

    参数是个指针,调用MyFunc 时只是把字符串的指针传递过去,并不传递字串的内容,如果为空,那说说明字串就是空的
      

  2.   

    data :=StrAlloc(512);
    ZeroMemo(data,512); 
    LZ这一段明明是给内存付了空值了~~应该是为空么
      

  3.   

    初始化的时候赋的空值,但是调用MyFunc(data)的时候应该给data赋值的。
      

  4.   


    调用的时候应该是data内存区域的地址,MyFunc()将data指向的内存区域赋值,为什么调用结束以后还是空的?
      

  5.   

    恩,LZ试试在调用时,先创一个指针并分配内存之,然后用memcpy来赋值,因为你是直接用指针来的,我怀移是不是你在程序的什么地方把原指针delete了,没有代码不好说,先试。
      

  6.   

    void *p;
    p=new p[n];
    memcpy(p,data,n);
    可能OK?
      

  7.   

    代码在公司,楼上说了memcpy我也试过了,也是不好用,倒是不小心吧指针删了这条我明天好好去查一下。
      

  8.   

    已解决,我把导出的函数放在类MyApp中,然后应该是函数不会产生返回结果,就出现上面的问题了,把函数独立出来,不是类成员的时候就ok了。