我使用 Makefile 代码中的以下命令编译了一个 .cc 文件:
bin/bash ../libtool --silent --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I.
-I.. -I../include/ -I.. -g -O2 -MT rtpsession_inet.lo -MD -MP -MF
.deps/rtpsession_inet.Tpo -c -o rtpsession_inet.lo rtpsession_inet.cc
.cc 文件中有一个名为rtp_session_rtp_recv的函数。但是据说我使用Makefile生成的库时找不到这个函数的引用。
于是我查看了 rtpsession_inet.cc 生成的 .o 文件,发现并没有一个名为rtp_session_rtp_recv的函数,而函数名改为_Z20rtp_session_rtp_recvP11_RtpSessionj。
同时,还有其他几个函数更改了它们的名称,例如rtp_session_rtp_send -> _Z20rtp_session_rtp_sendP11_RtpSessionP4msgb。
但是rtp_session_set_remote_addr_full等函数根本没有改变。
附加字符的含义是什么?我该如何处理这个问题?
我在 Linux 中编译文件并使用命令
nm rtpsession_inet.o
读取 .o 文件。(包括名称错误的所有函数都带有T标记,表示引用存在)
谢谢!