Я пытаюсь запустить пример CORBA в C ++ на Ubuntu 12.04:
http://www.yolinux.com/TUTORIALS/CORBA.html
и у меня все еще есть ошибка, когда я пытаюсь запустить:
$ ./Server
'IOR:010000001600000049444c3a446174612f53657276696365413a312e3000000001000000000000006800000001010200100000003139322e3136382e3135392e31323900b1aa00000e000000fe4ba4015100001a19000000000000000200000000000000080000000100000000545441010000001c00000001000000010001000100000001000105090101000100000009010100'
Caught CORBA::SystemException.
перед запуском сервера я сгенерировал файл журнала:
omniNames -start 2812 -logdir ~/Desktop -errlog ~/Desktop/omniNamesError.txt
который дал мне файл ~ / Desktop / omniNamesError.txt, как показано ниже:
Thu Jan 24 22:54:34 2013:
Starting omniNames for the first time.
Wrote initial log file.
Read log file successfully.
Root context is IOR:010000002b00000049444c3a6f6d672e6f72672f436f734e616d696e672f4e616d696e67436f6e746578744578743a312e30000001000000000000007400000001010200100000003139322e3136382e3135392e31333000fd0a00000b0000004e616d6553657276696365000300000000000000080000000100000000545441010000001c0000000100000001000100010000000100010509010100010000000901010003545441080000009aad015101004982
Checkpointing Phase 1: Prepare.
Checkpointing Phase 2: Commit.
Checkpointing completed.
Далее я добавил в файл:
/etc/omniORB.cfg
строка из сгенерированного файла:
InitRef = NameService=IOR:000100010000000100010509010100010000000901010003545\
441080000005ea5015101002002010000002b00000049444c3a6f6d672e6f72672f436f734e61\
6d696e672f4e616d696e67436f6e746578744578743a312e30000001000000000000007400000\
001010200100000003139322e3136382e3135392e31333000fd0a00000b0000004e616d655365\
7276696365000300000000000000080000000100000000545441010000001c000000010000000\
1000100010000000100010509010100010000000901010003545441080000009aad0151010049\
82
Я также установил переменную среды:
$ export OMNIORB_CONFIG=/etc/omniORB.cfg
все как написано в учебнике, файлы скомпилированы (после 2 модификаций:
Я добавил: #включают на CRequestServiceA.cpp
и я изменился $ (CC) $ (CPPFLAGS) $ (ВКЛЮЧАЕТ) DataSK.cc в $ (CC) $ (CPPFLAGS) $ (ВКЛЮЧАЕТ) DataSK.cc && mv DataSK.o Data.o в MakeServer) но у меня все еще есть ошибка, как я сказал.
Пожалуйста, помогите мне с проблемой, я учился на многих уроках CORBA C ++ и никаких эффектов
Эти обратные слеши в вашем конфигурационном файле могут быть причиной проблемы. Чтобы избежать проблем с вставкой длинного IOR (который изменится) в ваш файл конфигурации, попробуйте установить InitRef
как указано в файле конфигурации (при условии, что вы используете службу имен на той же машине, что и ваша тестовая программа).
InitRef = NameService=corbaname::localhost
Или вы можете попробовать вставить IOR в одну строку (не разбивайте строку и не добавляйте обратную косую черту).
Или вы можете запустить свой сервер так:
$ ./Server -ORBInitRef NameService=corbaname::localhost
Или же
$ ./Server -ORBInitRef NameService=IOR:010000002b00000049444c3a6f6d672e6f72672f436f734e616d696e672f4e616d696e67436f6e746578744578743a312e30000001000000000000007400000001010200100000003139322e3136382e3135392e31333000fd0a00000b0000004e616d6553657276696365000300000000000000080000000100000000545441010000001c0000000100000001000100010000000100010509010100010000000901010003545441080000009aad015101004982
Если вы используете строку IOR, имейте в виду, что она почти наверняка изменится при каждом запуске службы имен, поэтому убедитесь, что вы используете самую последнюю.
Пожалуйста, смотрите документация omniORB для дополнительной информации.
Изменить после просмотра вашего комментария:
Учебник может быть старым и устаревшим. Попробуйте изменить эту строку:
CORBA::Object_var obj1=orb->resolve_initial_references("OmniNameService");
к этому
CORBA::Object_var obj1=orb->resolve_initial_references("NameService");
Вы также можете поработать над примером Echo в документация omniORB.
Я думаю, что я решаю это: я изменился OmniNameService
в NameService
и добавил в мой файл omniORB.cfg:
InitRef = NameService=IOR:00010....
(имя IOR пришло из omniNamesError.txt), затем запустите сервер следующим образом:
./Server corbaloc:rir:/NameService