2011-10-06 25 views

回答

30

是的,如果你知道函數簽名

調用前只寫函數簽名,如:

void f(int); //it is as if you've included a header file 

//then call it 
f(100); 

所有你需要做的是:鏈接slib.a到程序。

此外,請記住,如果靜態庫是用C語言編寫,並已編譯的C編譯器,那麼你已經使用extern "C"書寫時的函數簽名(如果你在C++程序),如:

extern "C" void f(int); //it is as if you've included a header file 

//then call it 
f(100); 

或者,如果你已經很多功能,那麼你可以將它們一起:

extern "C" 
{ 
    void f(int); 
    void g(int, int); 
    void h(int, const char*); 
} 

您可能希望在命名空間中寫的所有函數簽名,以避免任何可能的名稱衝突:

現在
namespace capi 
{ 
    extern "C" 
    { 
    void f(int); 
    void g(int, int); 
    void h(int, const char*); 
    } 
} 

//use them as: 

capi::f(100); 
capi::g(100,200); 
capi::h(100,200, "string"); 

你可以寫所有這些在頭文件,這樣你可以在您的.cpp文件頭文件(像往常一樣),並調用該函數(S)(照常)。

希望有所幫助。

+13

換言之:自己編寫庫的頭文件。 – sth

5

最簡單的方法:在簽名文件中寫入簽名,包含它並鏈接到庫。

相關問題