우리는 우리의 응용 프로그램에서 Visual C++ 6.0으로 개발 한 클라이언트에서 ActiveX 컨트롤을 사용합니다. 또한 omniORB 2.7을 사용하여 서버 앱에 연결합니다. 그것은 잘 작동했습니다. 하지만 지금은 Windows 7, 64 비트 PC에서이 응용 프로그램을 실행해야합니다. ActiveX 컨트롤이 작동 중입니다. 하지만 아래와 같이 ORB의 resolve_initial_references
함수를 호출하는 C++ 코드에서 :resolve_initial_references는 SystemException을 발생시킵니다.
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 설정 파일에'InitRef'를 설정합니다. 'InitRef = NameService = corbaname :: host1.example.com'. –
현재 클라이언트는 레지스트리 ORBInitialHost 및 ORBInitialPort 정보에서 사용합니다. – Halo
작동중인 컴퓨터에서이 레지스트리 항목을 삭제하려고 시도했습니다. 나는 같은 오류가있다. 따라서 어떤 이유로이 새로운 PC가 레지스트리에서 호스트 및 포트 정보를 얻을 수 없다는 것이 확실합니다. – Halo