【发布时间】:2017-07-28 01:40:06
【问题描述】:
我们有一个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
添加 cpp 项目
cproject/cppproject/src/c.h
cproject/cppproject/src/c.cpp
cproject/cppproject/src/m.h
cproject/cppproject/src/m.cpp
也许将 cpp 编译为分片库并链接它?
【问题讨论】:
-
不,即使使用一种语言,你也不能拥有两个
main()函数,而且绝对不能拥有不同语言的它们。同一个项目中也不能有多个同名文件。 -
@KenWhite 嗯?您当然可以拥有多个同名但不同目录的源文件。
-
是的,这绝对是可能的。通过正确使用
extern "C",您可以从 C++ 代码调用 C 函数,反之亦然——甚至链接到同一个二进制文件。 -
如果你小心点,只要你链接到 C++ 编译器而不是 C 编译器,它应该可以正常工作。这当然是传统的情况。即使使用 C 编译器,您可能也可以摆脱混合链接,但 C++ 有更多设置。您可能应该将
main()函数作为 C++ 代码使用,即使它只是int main(int argc, char **argv) { return c_main(argc, argv); }— 也就是说,它只是调用实现main()功能的(重命名的)C 函数。