c++ - 如何使用omniORB 构建程序?
问题描述
我已经为 C++ 安装了omniORB 并从这里下载了它http://omniorb.sourceforge.net/download.html。我试图构建这个程序(main.cpp):
#include "echo.hh"
#ifdef HAVE_STD
#include <iostream>
using namespace std;
#else
#include <iostream.h>
#endif
class Echo_i : public POA_Echo {
public:
inline Echo_i() {}
virtual ~Echo_i() {}
virtual char* echoString(const char* mesg);
};
char* Echo_i::echoString(const char* mesg) {
return CORBA::string_dup(mesg);
}
static void hello(Echo_ptr e) {
if( CORBA::is_nil(e) ) {
cerr << "hello: The object reference is nil!" << endl;
return;
}
CORBA::String_var src = (const char*) "Hello!";
CORBA::String_var dest = e->echoString(src);
cout << "I said, \"" << (char*)src << "\"." << endl
<< "The Echo object replied, \"" << (char*)dest <<"\"." << endl;
}
int main(int argc, char** argv) {
try {
CORBA::ORB_var orb = CORBA::ORB_init(argc, argv);
CORBA::Object_var
obj = orb->resolve_initial_references("RootPOA");
PortableServer::POA_var poa = PortableServer::POA::_narrow(obj);
PortableServer::Servant_var<Echo_i> myecho = new Echo_i();
PortableServer::ObjectId_var myechoid = poa->activate_object(myecho);
Echo_var myechoref = myecho->_this();
PortableServer::POAManager_var pman = poa->the_POAManager();
pman->activate();
hello(myechoref);
orb->destroy();
}
catch (CORBA::SystemException& ex) {
cerr << "Caught CORBA::" << ex._name() << endl;
}
catch (CORBA::Exception& ex) {
cerr << "Caught CORBA::Exception: " << ex._name() << endl;
}
return 0;
}
创建文件 echo.idl:
interface Echo {
string echoString(in string mesg);
};
并运行omniidl -bcxx echo.idl
。当我运行g++ main.cpp -o main
它返回:
/usr/bin/ld: /tmp/ccQ9WBKJ.o: in function `Echo_i::echoString(char const*)':
main.cpp:(.text+0x18): undefined reference to `CORBA::string_dup(char const*)'
... ~50 lines of linker message
collect2: error: ld returned 1 exit status
GNU 链接器无法获得omniORB 的定义,为什么?如何解决这个问题并获得二进制文件?
解决方案
推荐阅读
- javascript - TypeError:无法读取未定义的 Vue JS 的属性“推送”
- c# - MongoDb 中的对等点重置连接
- python - 从 C++ 运行 python 程序
- python - Hackerrank 问题:列表理解中的几个 for 循环
- javascript - 子组件在 Parent 中的 setState 后未重新渲染(道具未分配给子构造函数中的状态)...... React 似乎坏了(纯 React)
- wordpress - 如何通过多个排序参数对包含多个帖子的 WP_Query 进行排序?
- php - Laravel:第 384 行的 vendor/laravel/framework/src/Illuminate/Support/Arr.php 中的语法错误
- javascript - 文档准备好后使用选择器的问题
- bash - 在bash中跨多行匹配正则表达式
- javascript - 如何修复 Gatsby 开发错误:找不到模块 'gatsby-cli/lib/reporter'?