如果我沒有頭文件,只有* .a文件,但我知道函數簽名,它是一種使用靜態庫函數的方法嗎?如何使用靜態庫中的函數,如果我沒有頭文件
16
A
回答
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)(照常)。
希望有所幫助。
5
最簡單的方法:在簽名文件中寫入簽名,包含它並鏈接到庫。
相關問題
- 1. 靜態庫頭文件
- 2. 如何在C中的.a(靜態庫)文件中使用函數?
- 3. Cmake/cpack:如何創建一個沒有頭文件的libC++靜態庫deb?
- 4. 如何使用haskell中沒有頭文件的共享庫?
- 5. 如何將靜態庫中的C++頭文件導入Obj-C?
- 6. 如果我只在使用boost時使用頭文件,它會靜態鏈接,還是根本沒有鏈接?
- 7. 如何使用非靜態函數內部靜態函數
- 8. 如何使用靜態庫中的函數
- 9. 如何使用poll linux函數調用靜態文件discriptor?
- 10. 如何在庫中使用靜態函數
- 11. 靜態庫中的靜態庫(Protobuff):「沒有這樣的文件或目錄」
- 12. 頭文件中的靜態數組 - C++
- 13. 使用GCC,我如何只導出靜態庫中的某些函數?
- 14. 在我的靜態庫中的不同頭文件中重複使用的頭文件
- 15. 何時使用靜態庫需要頭文件?
- 16. #ifdef在c文件名中用於守護頭文件中的靜態函數
- 17. 如何爲靜態庫和頭文件構建libpcap源代碼
- 18. 如何從另一個靜態函數調用靜態函數
- 19. Tomcat7如何使用Expires HTTP標頭提供靜態文件
- 20. 靜態庫不需要頭文件?
- 21. iOS靜態庫+預處理頭文件
- 22. C/C++:頭文件中的靜態函數,是什麼意思?
- 23. 應該如何使用靜態/非靜態函數?
- 24. 如何使用靜態函數填充靜態std :: map?
- 25. 沒有頭文件的C函數
- 26. 如何在沒有頭文件的情況下定義靜態成員?
- 27. Eclipse沒有找到我的靜態庫
- 28. 使用靜態libtool庫沒有源文件
- 29. 如何構建我的類以避免使用靜態函數
- 30. 如何在靜態庫中使用struct
換言之:自己編寫庫的頭文件。 – sth