gpt4 book ai didi

c - nm 命令输出中的奇怪符号名称

转载 作者:IT王子 更新时间:2023-10-29 01:03:48 25 4
gpt4 key购买 nike

我构建了一个名为 InterfaceLayer.so 的动态库。当我打电话时:

> nm InterfaceLayer

作为输出,我得到一些如下所示的符号:

00000e28  T _Z5startv

虽然我期望它是“start”,但正如我在代码中定义的函数名称一样。

为什么会这样?

最佳答案

那是因为 C++ 名称修改

nm -C

分解它们。

为了防止名称混淆,

  • 使用 C 编译器(gcc,而非 g++),将源文件命名为 .c(而非 .cpp)
  • 或声明 extern "C":

.

我的.h

  extern "C" 
{
void start();
void finish();
}

这将为它们提供“C”链接,这意味着它们不能重载,不能通过引用传递,没有任何 c++ :)

关于c - nm 命令输出中的奇怪符号名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6036066/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com