Tag: 名称修改

使用extern“C”包装C lib,除了内部C ++包括

我有一个C库,我需要在C ++代码中使用,所以我需要用extern “C”块包装整个lib。 问题是该库似乎包含一个C ++编译的代码,因此包装整个lib也会包装该C ++头。 在lib.h里面我只包含了我要公开的所有内部头文件,如下所示: #ifndef LIB_H #define LIB_H #include “lib_foo.h” #include “lib_bar.h” #include “lib_baz.h” #endif 因此客户端只需要包含lib.h即可使用lib。 在我的第一次尝试中,我做到了这一点: #ifndef LIB_H #define LIB_H extern “C” { #include “lib_foo.h” #include “lib_bar.h” #include “lib_baz.h” } #endif 但是当我在already_compiled_c++.h执行任何函数时,我得到一个符号查找错误。 如何避免在already_compiled_c++.h头文件中应用extern “C” ? 编辑: 解决了。 这不是使用extern “C”的问题,将编译的c ++库与gyp正确链接是一个问题: 在node-sqlite3中使用Gyp中的共享库

function到mangle / demangle函数

我之前已经certificate,C ++函数不易在汇编中表示。 现在我有兴趣阅读这种或那种方式,因为callgrind,valgrind的一部分,显示它们在组装时被解构,它们被显示为损坏,所以我想要破坏valgrind函数输出或者取消函数的汇编名称。 有人试过这样的东西吗? 我正在查看一个网站 ,发现以下内容: Code to implement demangling is part of the GNU Binutils package; see libiberty/cplus-dem.c and include/demangle.h. 有人试过这样的东西,我想在C中解码/破坏吗? 我的编译器是gcc 4.x.