现在做一个项目,别人的delphi demo程序调用我们的vc动态库,发现无论我们什么字符串,demo那边始终获得是空值。
打印了propertyName是正常显示的,delphi那边说用的是string类型。那我们应该怎么返回,寻找对应delphi的数据结构。const char* __stdcall GetValueStr(const char* propertyName)
{
const char* pValue = g_szName;
         return pValue;
}

解决方案 »

  1.   

    你返回了局部指针!在函数返回时,指针指向的地址已经销毁,当然获取不到正确的值,把你那个pvalue改成static类型或者用全局的
      

  2.   

    g_szName是全局的,返回全局的效果一样
      

  3.   

    const char* __stdcall GetValueStr(const char* propertyName)
    {
    const char* pValue = g_szName;
      return pValue;
    }function GetValueStr(PropertyName:PAnsiChar):PAnsiChar;stdcall;external 'aaa.dll';var property,value:AnsiString;
    value:=StrPas(GetValueStr(PAnsiChar(property)));这样行不?
      

  4.   

    现在的问题是不知道delphi的代码是怎么写的,他们就说用的是string,其他人vc库都是可以的。
    我们试了一下
    1,pchar是可以的,
    2,即使是string,string = 字符串指针 ,最后结果出来string里面也是有东西的。
    现在就不知道他们代码怎么写的了。