将C编译为使用CLR的代码

3
可能重复:

编译C代码以用于.NET的问题:
Compiling C code for .NET

我有一堆C源代码,我想将其编译为使用.NET框架。我下载了Microsoft Visual C++并选择了新的CLR项目。然后我添加了所有的C代码,并尝试编译文件。它显示:

cl : Command line error D8045: cannot compile C file '..\..\..\..\..\Downloads\lzma912\C\XzDec.c' with the /clr option

为什么我无法编译这个?

5
在我看来,把一个问题标记为“完全重复”的同时关闭它,这个问题本身被标记为“不是一个真正的问题”,这样做是很粗鲁的! - RBerteig
5
为了抵消被踩的负面评价,我给你点个赞。尽管楼主之前有些情绪化的发言,但这确实是一个合理的问题。考虑到有些人会不加思索地批评微软的任何东西,我也有同感。但老实说,只是将情绪化的发言删除就足够了,真没必要再遭受一连串的负面评价。 - RBerteig
2个回答

15
有时候,查看MSDN可以澄清问题。您需要强制编译器将C文件视为C++文件。请参见此处
引用如下:
只有C++源代码文件可以传递到使用/clr的编译中。使用/TP将.c文件编译为.cpp文件;有关更多信息,请参见/Tc、/Tp、/TC、/TP(指定源文件类型)。

5
尝试使用/Tp选项,这样VC++就会认为您的源文件是C++代码而不是C代码。这样您就不必更改文件扩展名。

1
+1,但是VC++允许从void指针进行隐式转换吗?那会导致错误。 - alternative
@Mathepic:那只是为了解决第一个错误,毫无疑问他会遇到其他错误。 - Brian R. Bondy
至少他将被迫使用C方言,这是C++和C之间的交集,由于构建CLR的假设而进行修改。但第一步是让编译器尝试编译,事实上它只能为CLR编译C ++是一个关键事实。 - RBerteig

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接