我想,以確定是否有可能對一個linux庫,C和C++綁定鏈接。我有一個現有的C++項目被分解成幾個庫。我想用C綁定擴展這些庫,以便我可以在cgo中使用它們。鏈接到庫C和C++綁定
我知道++與外部的「C」語法如何搭配C/C。我有的問題是菊花鏈式庫。我創建這說明我的問題的示例項目:
https://github.com/Shelnutt2/c_cpp_linker_test
在這個項目中,我們有hello.c中,world.cpp這兩者都內置到庫調用libwords。我可以將libwords鏈接到libhelloworld,而不會出現問題。嘗試構建main.cpp時出現問題,該main.cpp想從libhelloworld調用ac和C++函數(因此也是鏈接的libwords)
由於C++與C的鏈接不同,主可執行程序無法找到hello函數
main.cpp:15: undefined reference to `hello'
是否有可能以這種方式對同一庫鏈接或者我需要打破C綁定到自己的包裝庫?
在我使用的共享庫示例項目,但我開到靜態鏈接,如果這是可能的。
沒有語言的C/C++。由於顯而易見的原因,C不支持'extern「C」'。不清楚你想完成什麼。看[問]並提供[mcve]。 – Olaf
@Olaf'語言'C/C++是C和C++的交集。 FWIW,ANSI C89幾乎是C++的真正子集,在ANSI C89的K&R書中,所有示例都使用C++編譯器進行編譯。 –
@ErikAlapää:這簡直是無稽之談! 1)C是C11,ANSI-C早已不復存在。離開身體埋藏。 2)對於C++來說是相同的,這是C++ 14(主要用C++ 11轉換)。 3)相同的語法不意味着相同的語義試試'static const int i = 5; int a [i];'在兩個類似的'auto int i = 5,a [i];'中。 4)告訴C++是C的超集的人不知道這兩種語言中的至少一種不足以寫出比「Hello World」更多的語言;至少沒有任何生產代碼。 – Olaf