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/