如何追踪未定义的符号

Fla*_*ois 1 c++ linker corba compilation

我目前坚持使用一些成功编译成.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}

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

Sha*_*our 6

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

c++filt _ZrSRKN5CORBA3AnyERPN3RTT5corba4Math7MatrixdE
Run Code Online (Sandbox Code Playgroud)

我只是用c++filtjs,因为它同时支持g++msvc++,这与本回来了:

operator>>=(CORBA::Any const&, RTT::corba::Math::Matrixd*&)
Run Code Online (Sandbox Code Playgroud)