2017-07-28 87 views
1

我們有一個c項目,並希望將C++項目組合到這個c項目中,並將它們編譯成一個二進制文件,這有可能嗎?是否可以編譯c/C++混合源代碼?

cproject/src/ 
cproject/src/a.h 
cproject/src/a.c 
cproject/src/b.h 
cproject/src/b.c 
cproject/src/main.c 

附加cppproject

cproject/cppproject/src/c.h 
cproject/cppproject/src/c.cpp 
cproject/cppproject/src/m.h 
cproject/cppproject/src/m.cpp 

也許編譯CPP爲碎片庫,並將其鏈接?

+2

不,即使使用一種語言,也不能有兩個'main()'函數,並且絕對不能使用不同的語言。在同一個項目中也不能有多個具有相同名稱的文件。 –

+0

[混合c和C++代碼的Makefile]可能的重複(https://stackoverflow.com/questions/32105358/makefile-with-mixed-c-and-c-code) – Grifplex

+5

@KenWhite Huh?您當然可以擁有多個具有相同名稱但不同目錄的源文件。 –

回答

0

是的,你可以。你說你在C中有一個項目,而在C++中有另一個項目。 但是,你會解決的方式(「碎片庫和鏈接它?」)是另一回事。

至於其他人注意到您可以:

1)C和C++(採用精心的extern 「C」

2)使混合有子項目(在Xcode的Mac項目是一個標準的做法,將項目添加到現有項目

3)確保只有一個main()的

4)你想要做一個外部lib下,沒有必要將它們混合,但暴露的方法,管理包括一個如果你沒有經驗,dlinkage選項和傳遞參數可能有點複雜。

Libs和DLL與普通的「main()」程序有很大不同。

相關問題