我们在应用程序中使用Visual C++ 6.0开发的客户端中使用ActiveX控件。我们还使用 omniORB 2.7 提供与服务器应用程序的连接。一切正常。但是现在我们需要在Windows 7、64位PC上运行此应用程序。 ActiveX控件正在运行;但是在C++代码中,当它调用ORB的resolve_initial_references
函数时,如下所示:
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
最佳答案
听起来您的客户在查找名称服务的初始引用时遇到了麻烦。检查如何将此信息提供给客户端,即omniORB配置文件,环境变量,命令行参数或注册表(在Windows上)。
关于c++ - resolve_initial_references导致SystemException,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16695833/