在混合C C ++代码时链接动态库中的问题

时间:2011-09-23 12:42:42

标签: c++ c gcc dylib

我有一个C动态库,由于一些需求变化,我必须进行一些重构。

我在一个c文件中有以下代码。

__attribute__((noinline))
static void *find_document(...)
{
  ...
}

bool docuemnt_found(const char *name) {
 ...
    find_document(...);
 ...
}

我在不同的cpp文件中分离了docuemnt_found()函数。现在docuemnt_found()函数无法链接到find_document()方法?

我尝试为c文件创建标头,然后使用extern "C"包含标头,但它不起作用。

我想保持find_document()内联。这里有什么遗漏或有什么不对吗?

1 个答案:

答案 0 :(得分:6)

这里的问题是将函数声明为static - 在C中,这表示它应该可用于同一编译单元(.c文件)中的其他函数,但不能用于其他函数。文件。删除static可以解决问题。

顺便提一下,第二个函数拼写错误 - 它应该是document_found,而不是docuemnt_found