2

アプリケーションでは、Visual C++ 6.0 で開発されたクライアントで ActiveX コントロールを使用します。また、omniORB 2.7を使用して、サーバー アプリへの接続を提供します。正常に動作しています。しかし今は、このアプリケーションを Windows 7 の 64 ビット PC で実行する必要があります。ActiveX コントロールは機能しています。ただし、C++ コードでは、resolve_initial_references以下のように ORB の関数を呼び出す場合:

try 
{
    // Obtain a reference to the root context of the Name service:
    CORBA::Object_var initServ;
    initServ = orb->resolve_initial_references("NameService");
}   
catch(CORBA::ORB::InvalidName& ex)
{
    FormAndOpenHataDialog("Service Required is Invalid [does not exist] !", __FILE__, __LINE__);
    return CORBA::Object::_nil();
}
catch(CORBA::SystemException & ex)
{       
    FormAndOpenHataDialog(ex.NP_RepositoryId() , __FILE__, __LINE__);
    return FALSE;
}

SystemException をスローします。これは、XP の 32 ビット マシンでは実行されませんでした。例外の原因を突き止めようとしました。しかし、私が得ることができたのは次のことだけでしたNP_RepositoryId()IDL:omg.org/CORBA/NO_RESOURCESが出力されます。

接続に問題はないと思います。ORBのinit()機能は問題なく動作しますので。また、許可されている接続数を超えているとは思いません。それは意味がありません。NO_RESOURCES とだけ表示されます。minorコードを印刷しようとしました。しかし、それは空になります。他に何ができますか?

編集: これらでサーバーアプリケーションを開始します:-ORBInitialHost 192.168.1.8 -ORBInitialPort 900 -BOAiiop_port 5140

4

1 に答える 1

1

クライアントがネーム サービスへの最初の参照を見つけるのに苦労しているようです。この情報をクライアントに提供する方法を確認してください。つまり、omniORB 構成ファイル、環境変数、コマンドライン引数、またはレジストリ (Windows の場合) です。

于 2013-05-23T13:05:31.823 に答える