2

我目前遇到了一些我成功编译成 .so 文件的代码。当我尝试将我的库链接到某些代码时,如果使用以下语句失败:

未定义符号:_ZrSRKN5CORBA3AnyERPN3RTT5corba4Math7MatrixdE

我能得到的唯一有用信息是对象或函数使用以下类型:“CORBA::Any”(常规 corba 类型)和“RTT::corba::Math::Matrixd”(使用一个 hh 文件和两个 cc 文件定义的类型)。

我很想知道该符号在我的代码中的确切位置以及为什么找不到它。我怀疑它代表了我的一个 cc 文件中定义的函数,所以这是我编译整个内容的方式:

g++ -I{CORBA 包含} main.cpp one.cc two.cc -L{CORBA 库}

我应该遵循什么调试过程?

4

1 回答 1

8

在 Unix 环境中, c++filt将在您的系统上可用,这就是您将如何使用它来对函数名称进行解码:

c++filt _ZrSRKN5CORBA3AnyERPN3RTT5corba4Math7MatrixdE

我刚刚使用c++filtjs,因为它同时支持g++and msvc++,它回来了:

operator>>=(CORBA::Any const&, RTT::corba::Math::Matrixd*&)
于 2013-08-21T12:44:48.447 回答