c++ - Linux 平台中的 extern "c"行为

标签 c++ linux header-files extern

ScriptInterface.h

extern "C"
{
#include "kel.h"
#include "process.h"
#if defined(SIMULATOR_COMPILE_FROM_SCRIPTINTERFACE) || defined(SIMULATOR_WIN)
#include "sigtypes.h"
#endif
}

在 Windows 平台中,这不会给出任何错误(下面的代码)

xyz.cpp

#include "kel.h"
#include "process.h"
#include "sigtypes.h"

#include "ScriptInterface.h"

而在 Linux 平台上却给出了“符号查找错误”。 Linux 平台中 extern 'C' 有什么不同的行为吗?

最佳答案

_Z16KEL_MEM_AllocateP19KEL_MEM_tPoolHandlej 是一个非常困惑的名称,而且几乎可以肯定它是存在的,因为您将 kel.h 包含在 extern "C" block 的外部

删除 xyz.cpp 中的前三个包含内容,只使用 ScriptInterface.h 中包含的内容(标记为非损坏)。

关于c++ - Linux 平台中的 extern "c"行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25052230/

相关文章:

c++ - 模板中的虚拟方法未生成

python - SWIG 和 Boost::变体

c++ - 头文件中的类声明和定义是否会在每个包含文件中进行编译?

linux - awk 在输出中打印不必要的新行

c - 我在哪里可以找到 unix 上 C 中的头文件

c++ - 无法正确包含头文件

c++ - 将引用作为命名参数传递给可变参数函数时出现问题

c++ - 使用 cin 关闭 while 循环

linux - SSL 证书安装 apache 2 不工作

c++ - Linux 上 C 中字符数组和指针的段错误