我在編譯一些代碼,它使用了一個名爲staticlib.a的靜態庫中實現的函數。我也有名爲staticlib.h的頭文件,其中包含該函數的聲明。我的main,包含在包含staticlib.h的main.c文件中,只調用該函數,沒有別的。所以我編譯與 gcc main.c staticlib.a 和一切工作正常。我需要C++的某些功能,但是如果我正確更改main.cpp中的main.c並以相同方式編譯 gcc main.cpp staticlib.a 對我的函數發生了未定義的引用。我怎樣才能做到這一點?爲什麼會出現這個問題?我無法在我訪問過的任何網站上找到解釋... 謝謝你們所有的答案。在.cpp文件上鍊接一個靜態庫
0
A
回答
1
你必須定義庫中的函數作爲一個「C」的功能,而不是一個C++函數 - 這樣做在你的main.cpp
extern "C"
{
#include "staticlib.h"
}
+0
謝謝,這項工作! – user1466609
1
C和C++編譯不同,C++使用名稱重整(將C++類型信息嵌入到目標文件中)。要停止這種行爲,以便可以從C++鏈接到C代碼,可以在包含C頭文件時使用C++中的extern C語法。
相關問題
- 1. 如何鏈接cpp源文件中的靜態庫?
- 2. 在另一個靜態庫中鏈接靜態庫
- 3. 在VC++中靜態鏈接一個庫
- 4. 添加一個鏈接到一個靜態文件上的Symfony
- 5. 鏈接靜態庫,共享另一個靜態庫
- 6. 鏈接第三方靜態庫到另一個靜態庫
- 7. 將靜態庫鏈接到另一個靜態庫
- 8. GCC:列出一個靜態鏈接庫
- 9. 將靜態庫鏈接到一個DLL
- 10. GCC鏈接一個靜態庫
- 11. 將動態庫鏈接到一個靜態庫(又名預鏈接動態庫)
- 12. 靜態鏈接庫
- 13. 鏈接靜態庫與靜態庫
- 14. UNIX:靜態庫鏈接到靜態庫
- 15. 靜態和動態鏈接Linux上的同一個庫
- 16. 什麼是靜態庫,靜態鏈接動態庫和動態鏈接動態庫的.lib文件?
- 17. 如何將一個庫靜態鏈接到另一個靜態庫?
- 18. 靜態鏈接一個dylib
- 19. 鏈接靜態lib與另一個靜態庫,並使用一個exe文件中的主庫lib
- 20. 靜態鏈接庫文件會導致鏈接錯誤
- 21. 靜態鏈接一個C庫和一個Haskell庫
- 22. Visual Studio:靜態鏈接到靜態庫
- 23. 如何鏈接一個本身與動態庫鏈接的靜態庫?
- 24. 將動態庫鏈接到鏈接到其他靜態庫的靜態庫
- 25. 克++鏈接靜態庫成一個動態庫(不-fPIC)
- 26. Windows上的靜態鏈接的OpenGL庫
- 27. 鏈接solaris上的zeromq靜態庫
- 28. 從多個.h/.cpp文件(Visual Studio 2005)創建靜態庫?
- 29. 靜態庫鏈接兩次
- 30. C靜態鏈接庫嗎?
到OP,請接受一些答案,很顯然你不明白的計算器網站 – KevinDTimm
的操作很好,到現在我已經取得3問題上計算器的網站,直到現在沒有任何answear完全解決了我的問題......在這個問題上,我已經收到了正確的答覆,現在我將接受它... – user1466609