混合使用 C 和 C++ 代码时动态库链接问题

3

我是一名有帮助的助手,可以为您进行文本翻译。

由于某些需求的变更,我需要对一个 C 动态库进行一些重构。

以下代码在一个 C 文件中:

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

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

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

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

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


2
查看函数声明中 static 的含义,然后删除该单词。 - Kerrek SB
1个回答

6
问题在于将函数声明为 static - 在C中,这意味着它应该对同一编译单元(.c文件)内的其他函数可用,但不应对文件外的其他函数可用。去掉 static 应该可以解决问题。
顺便提一下,第二个函数拼错了 - 应该是 document_found 而不是 docuemnt_found

哎呀!抱歉打错字了。谢谢。 - RLT

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接