我在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,然后选择......:
谢谢,帕维尔。
答案 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应该是合理的便携式。