Мы используем элемент управления ActiveX в нашем клиенте, разработанный с помощью Visual C++ 6.0, в нашем приложении. Мы также используем omniORB 2.7 для подключения к серверному приложению. Он работал нормально; но прямо сейчас нам нужно запустить это приложение на 64-битном ПК с Windows 7. Элемент управления 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
InitRef
в файле конфигурации omniORB, например.InitRef = NameService=corbaname::host1.example.com
. - person Brian Neal   schedule 22.05.2013