![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++遇到的悬而未解之谜
文章平均质量分 68
Believer——篝火者
这个作者很懒,什么都没留下…
展开
-
dlsym在c++中的坑
对于运行期间undefined symbol错误,说明运行过程中没有找到符号,可能有可执行文件中rpath中根本没有需要链接的动态库,可以通过ldd查看可执行文件需要链接哪些动态库;通过LD_DEBUG=libs ./文件查看rpath以及在搜索库的时候为什么没有从路径中找到,通过-Wl,-rpath或者export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:解决;由于C和C++对于符号命名规则的不同,导致链接不到符号,通过nm命令查看共享库中的符号表对比可重定位文件的符号。原创 2024-06-06 11:36:57 · 346 阅读 · 0 评论 -
关于namespace中的奇怪错误
对于main.cpp,编译得到的.o文件符号表如下(通过nm .o文件就能查看重定位文件的符号表)符号的名命包括namespace t2,符号的名称可以和main.o的符号表对应因此能链接成功。也就是展开namespace t1,编译的得到的符号表并不包含namespace。对于编译失败的情况,a.cpp文件得到的a.o文件符号表是。而编译成功的情况符号表如下。原创 2024-05-17 23:23:12 · 187 阅读 · 0 评论