我可以在Visual Studio中的单个项目中混合使用C ++和C吗?

时间:2009-10-25 01:06:00

标签: c++ c visual-studio-2008 winapi

我在VS2008中有一个Win32 DLL项目,它是用少数几个C模块编写的 因为我希望能够在VS2008外部构建,而不依赖VS2008,所以我制作了一个自定义makefile,它完成了所有构建和链接步骤。这一切都设置得很好。

现在我想在这个DLL中添加几个C ++模块。 我修改了自定义makefile以将.cpp模块编译为C ++,将.c模块编译为常规C(/ Tc)。这一切都有效。它把所有东西连在一起,没问题。

我可以配置VS2008项目吗?

我可以在同一个VS2008项目中混合使用C ++和C吗?

或者我是否需要自定义构建步骤?

感谢。


ANSWER

我将VS2008项目设置为C编译。我需要将其更改为Compile As“Default”。右键单击该项目,选择Properties,然后选择......:

alt text

谢谢,帕维尔。

3 个答案:

答案 0 :(得分:8)

首先,如果你自己构建它,你甚至不需要/Tc - cl.exe使用文件扩展名来确定类型,所以.c文件默认会被编译为C,并且.cpp和.cxx文件为C ++。

对于VS项目,它以完全相同的方式工作,除了你不能覆盖这种行为(或者至少我不知道如何)。

答案 1 :(得分:5)

在同一个项目中混合C和C ++绝对没有问题。您只需要在C函数和C数据结构中设计C和C ++模块之间的接口,然后确保在C ++端使用C-linkage说明符extern "C"声明这些接口函数。

答案 2 :(得分:1)

他们应该添加正常,考虑到Microsoft C编译器将编译两者。如果将它们添加到项目中,它们将被传递给cl - 我相信cl会根据文件的扩展名选择使用哪种模式。你正在使用.cpp,这很好。

简而言之:是的。

GCC也会这样做,因此你的makefile应该是合理的便携式。