アプリケーションでは、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