2017-07-28 67 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()”程序有很大不同。

相关问题