2011-09-23 59 views
3

我有一個C動態庫,由於一些需求的變化,我不得不做一些重構。動態庫中鏈接問題,同時混合C 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()內聯。這裏有什麼缺失或有什麼問題嗎?

+0

我正在使用GCC 4.2 – MacGeek

+2

查看函數聲明的'static'的含義。然後刪除「靜態」一詞。 –

+0

aa !!!雅。謝謝。 – MacGeek

回答

6

這裏的問題是函數聲明爲static - 在C中,這表示它應該可用於同一編譯單元(.c文件)內的其他函數,但不適用於文件外的其他函數。刪除static應該可以解決問題。

順便提一句,第二個功能拼寫錯誤 - 它應該是document_found,而不是docuemnt_found

+0

呀!對錯字感到抱歉。謝謝。 – MacGeek