<div><br></div><div>Mr Duncan&nbsp;Grisby</div><div>&nbsp; &nbsp; &nbsp; &nbsp;Thank you for your reply. What I do is to port omniorb on the vxWorks system, include the name service. My step is as following :</div><div>&nbsp; &nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; &nbsp; &nbsp;1. I create a project naming "omniNams". In the file of "omniNames.cc " ,part of my code is &nbsp;as follows.Then I compile and run it as a thread in the target board:</div><div><div>&nbsp; &nbsp; &nbsp; &nbsp;int vxNames_main(void){</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;....</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; int argc = 5;</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>&nbsp; char *argv[5] = {""};</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>&nbsp; // Fill-in the port option</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>&nbsp; argv[1] = "-ORBendPoint";</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>&nbsp; argv[2] = "giop:tcp::2809";</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>&nbsp; argv[3] = "-ORBInitRef";</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>&nbsp; argv[4] = "NameService=corbaname:iiop:127.0.0.1:2809";</div></div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; orb = CORBA::ORB_init(argc, argv);&nbsp;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; CORBA::Object_var poaref = orb-&gt;resolve_initial_references("RootPOA");</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; PortableServer::POA_var poa = PortableServer::POA::_narrow(poaref);</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; PortableServer::POAManager_var pman = poa-&gt;the_POAManager();</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; CORBA::PolicyList pl(1);</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; pl.length(1);</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;pl[0] = poa-&gt;create_lifespan_policy(PortableServer::PERSISTENT);</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;the_poa = poa-&gt;create_POA("", pman, pl);</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; pman-&gt;activate();</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Get the "magic" interoperable naming service POA</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; poaref &nbsp; &nbsp; &nbsp;= orb-&gt;resolve_initial_references("omniINSPOA");</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;the_ins_poa = PortableServer::POA::_narrow(poaref);</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;pman &nbsp; &nbsp; &nbsp; &nbsp;= the_ins_poa-&gt;the_POAManager();</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;pman-&gt;activate(); &nbsp; &nbsp;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;.....&nbsp;</div><div>&nbsp; &nbsp; &nbsp; &nbsp;}</div><div>&nbsp; &nbsp; 2. I create a server side project naming "eg3_server". In the file of "eg3_impl.cc " ,part of my code is &nbsp;as follows.Then I compile and run it &nbsp;in the target board:</div><div>&nbsp; &nbsp; &nbsp; &nbsp;int server_main(int argc, char **argv)</div><div>&nbsp; &nbsp; &nbsp; &nbsp;{</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;...</div><div>&nbsp; &nbsp; &nbsp; &nbsp;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; CORBA::ORB_var &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;orb = CORBA::ORB_init(argc, argv);</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; CORBA::Object_var &nbsp; &nbsp; &nbsp; obj = orb-&gt;resolve_initial_references("RootPOA");</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; PortableServer::POA_var poa = PortableServer::POA::_narrow(obj);</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; PortableServer::Servant_var&lt;Echo_i&gt; myecho = new Echo_i();</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;PortableServer::ObjectId_var myechoid = poa-&gt;activate_object(myecho);</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;obj = myecho-&gt;_this();</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;CORBA::Object_var obj = orb-&gt;resolve_initial_references("NameService");</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CosNaming::NamingContext_var &nbsp;rootContext = CosNaming::NamingContext::_narrow(obj);</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;.....</div><div>&nbsp;</div><div>&nbsp; &nbsp; &nbsp; &nbsp;}</div><div>&nbsp; &nbsp; 3. My question is &nbsp;that it throw a exception of "Caught CORBA::OBJECT_NOT_EXIST" ,when excute the code "<span style="color: rgb(102, 102, 102); font-family: Arial, &quot;Microsoft YaHei&quot;, &quot;\\5FAEÈíÑźÚ&quot;, &quot;\\5B8BÌå&quot;, &quot;Malgun Gothic&quot;, Meiryo, sans-serif;">&nbsp;</span>CosNaming::NamingContext_var&nbsp;&nbsp;rootContext = CosNaming::NamingContext::_narrow(obj);"</div><div>&nbsp; &nbsp; 4. My code can run successfully on windows, but it &nbsp;throw the &nbsp;exception in step 3. With the help of debug mode, I&nbsp;discover something interesting:</div><div>&nbsp; &nbsp; &nbsp; &nbsp;In windows, the function call as following:</div><div>&nbsp; &nbsp; &nbsp; (1) CosNaming::NamingContext::_narrow(::CORBA::Object_ptr obj)&nbsp; in the file of "NamingSk.cc"</div><div>&nbsp; &nbsp; &nbsp; (2) omniObjRef::_realNarrow(const char* repoId) &nbsp;in the file of &nbsp;" omniObjRef.cc"</div><div>&nbsp; &nbsp; &nbsp; (3) omniObjRef::_real_is_a(const char* repoId) &nbsp;in the file &nbsp;of " omniObjRef.cc"</div><div>&nbsp; &nbsp; &nbsp; (4) omniObjRef::_remote_is_a(const char* a_repoId) &nbsp; &nbsp;in the file &nbsp;of " omniObjRef.cc"</div><div>&nbsp; &nbsp; &nbsp; (5)&nbsp;omniObjRef::_invoke(omniCallDescriptor&amp; call_desc, CORBA::Boolean do_assert) in the file of "omniObjRef.cc"</div><div>&nbsp; &nbsp; &nbsp; (6)&nbsp;omniRemoteIdentity::dispatch(omniCallDescriptor&amp; call_desc) in the file &nbsp;of " remoteIdentity.cc"</div><div>&nbsp; &nbsp; &nbsp;However,in vxworks, the function callas following:</div><div>&nbsp; &nbsp; &nbsp;(1) CosNaming::NamingContext::_narrow(::CORBA::Object_ptr obj)&nbsp;&nbsp;in the file of "NamingSk.cc"</div><div>&nbsp; &nbsp; &nbsp; (2) omniObjRef::_realNarrow(const char* repoId) &nbsp;in the file of &nbsp;" omniObjRef.cc"</div><div>&nbsp; &nbsp; &nbsp; (3) omniObjRef::_real_is_a(const char* repoId) &nbsp;in the file &nbsp;of " omniObjRef.cc"</div><div>&nbsp; &nbsp; &nbsp; (4) omniObjRef::_remote_is_a(const char* a_repoId) &nbsp; &nbsp;in the file &nbsp;of " omniObjRef.cc"</div><div>&nbsp; &nbsp; &nbsp; (5)&nbsp;omniObjRef::_invoke(omniCallDescriptor&amp; call_desc, CORBA::Boolean do_assert) in the file of "omniObjRef.cc"</div><div>&nbsp; &nbsp; &nbsp; (6)&nbsp;omniInProcessIdentity::dispatch(omniCallDescriptor&amp; call_desc)in the file &nbsp;of " inProcessIdentity.cc"</div><div>&nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; &nbsp;The difference is that &nbsp;the (5)function &nbsp;calls different funtion in the (6) funtion ,I don't know why.</div><div>&nbsp; &nbsp; &nbsp;The exception of "Caught CORBA::OBJECT_NOT_EXIST" occurs in (6) funtion in vxworks.</div><div>&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</div><div><div style="color:#909090;font-family:Arial Narrow;font-size:12px">------------------</div><div style="font-size:14px;font-family:Verdana;color:#000;"><div>&nbsp;</div></div></div><div>&nbsp;</div>