我有c++filt
命令去破坏符号,相反的工具是什么工具来破坏符号名称?
如果我想调用dlsym()
一个错位的 C++ 函数名,这将很有用。我宁愿不对代码中的名称进行硬编码,因为由于使用了新的编译器版本或新的编译器品牌,或者目前由于为多个平台编译,它可能会随着时间的推移而改变。
是否有一种编程方式可以在运行时获取表示 C++ 函数的字符串,以便代码独立于编译器?一种可能的方法是在编译时调用一个实用程序,该实用程序为正在使用的编译器执行名称修改,并将适当的修改后的 C++ 符号名称插入到字符串中dlsym()
以供使用。
这是我在此站点上找到的最接近解决方案的解决方案,该解决方案是通过使用固定的 C 样式名称间接到您希望的库中定义的 C++ 符号来完成的dlsym()
,但如果您无法控制该库的内容提供,这不是一个选项。