如何追踪未定义的符号

时间:2013-08-21 12:41:55

标签: c++ compilation linker corba

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

  

未定义的符号:_ZrSRKN5CORBA3AnyERPN3RTT5corba4Math7MatrixdE

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

我很想知道我的代码中确切地生成了符号的位置以及无法找到它的原因。我怀疑它代表了我的一个cc文件中定义的函数,所以这是我如何编译整个事情:

  

g ++ -I {CORBA includes} main.cpp one.cc two.cc -L {CORBA libraries}

我应该遵循哪些调试流程?

1 个答案:

答案 0 :(得分:6)

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

c++filt _ZrSRKN5CORBA3AnyERPN3RTT5corba4Math7MatrixdE

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

operator>>=(CORBA::Any const&, RTT::corba::Math::Matrixd*&)