2017-07-28 15 views
1

私たちはcプロジェクトを持っており、このcプロジェクトにC++プロジェクトを結合し、それらを1つのバイナリにコンパイルすることは可能でしょうか?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

いいえ、1つの言語でも2つの 'main()'関数を持つことはできません。また、異なる言語でそれらを持つことはできません。また、同じプロジェクト内に同じ名前のファイルを複数持つことはできません。 –

+0

[cとC++コードが混在したメイクファイル]の複製があります(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)Mac用のXcodeでサブプロジェクト(のプロジェクトがあることを確認ミックス標準的な方法は、既存のプロジェクト

3)一つだけのmain()

4)あなたがメソッドを公開する外部libに、それらをミックスする必要はありませんをしたい、しかし、管理があることを確認してくださいにプロジェクトを追加します〜を含むあなたが経験していないなら、リンクオプションと渡すパラメータはちょっと複雑かもしれません。

LibとDLLは、通常の "main()"プログラムとは大きく異なります。

関連する問題