还是前几天出现的问题,DELPHI调用C++Builder写的动态库出错,跟踪到动态库时,发现实际delphi实际经值已经传了进来,但是我动态库内部定义的数据和结构体都是E2208 cannot access an inactive scope的错误,到底是动态库问题还是Delphi有问题,该怎么避免这样的问题,谢谢

解决方案 »

  1.   

    我们这个代码大家看看:
    DLL部分
    int WINAPI JBC7K2_Comsume_Server(char *server_ip, char *ip, int port)
    {
        char s[128] = "";
        _netpack_ *netpk = (_netpack_ *)s;
        //_IpConfig_ *ipc = (_IpConfig_ *)netpk->szbuz;
        *(DWORD*)netpk->szbuz = inet_addr(server_ip);
        netpk->cmd = CMD_SERVERIP;
        JBC7K2_CloseSocket();
        JBC7K2_OpenSocket();
        return CmdSend(netpk, 4, 4, ip, port);
    }delphi调用
    codeprocedure TForm1.ServerIP_SetButtonClick(Sender: TObject);
    var
      ret: integer;
      serverIP: string;
    begin
      serverIp := Trim(Edit_ip.Text);
      ret := JBC7K2_Comsume_Server(Pchar(serverIp), pchar(g_devip), g_devport);
      if (ret = 0) then
        StatusBar.Panels[0].Text := '设置服务IP命令执行成功!'
      else
        StatusBar.Panels[0].Text := '设置服务IP命令执行失败!';end;
    大哥们,谢谢了
      

  2.   

    声明部分
    function JBC7K2_Comsume_Server(server_ip: pchar; ip: pchar; port: integer): integer; stdcall; external 'Dll\jbc7200.dll';
    我用动态库跟踪了,值都传不下去
      

  3.   

    因为现在我用C++BUILDER调用没有遇到出现过类似的情况,用BCB写的测试程序都是OK的,就DELPHI调用一直出错
      

  4.   

    你在BCB里调用时也是用的string?你要不要在delphi用pchar类型的变量,分配好然后再传入试一下?