2010-09-06 213 views
3

可能重複:
Compiling C code for .NET編譯C使用CLR

我有一堆的C源代碼,我想因此它使用.NET Framework進行編譯。我下載了Microsoft Visual C++並選擇了新的CLR項目。然後我添加了所有的C代碼,並試圖編譯這些文件。它說

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

爲什麼我不能編譯這個?

+3

你爲什麼這麼激進? – 2010-09-06 14:03:21

+5

恕我直言,將一個問題關閉爲「完全重複」的問題本身被封閉爲「不是真正的問題」是不禮貌的! – RBerteig 2010-09-06 21:45:57

+5

+1來抵消downvoting。儘管OP有先發制人的咆哮,但這是一個合理的問題。考慮到一些來自MS沒有想到的民間傾倒的方式,我很同情。但說實話,僅僅編輯咆哮就足夠了,它實在不值得投票。 – RBerteig 2010-09-06 21:50:09

回答

15

有時,尋找MSDN可以澄清事情。您需要強制編譯器將C文件視爲C++文件。請參閱here

引述:

只有C++源代碼文件可以被傳遞到使用/ CLR編譯。使用/ TP將.c文件編譯爲.cpp文件;請參閱/ Tc,/ Tp,/ TC,/ TP(指定源文件類型)以獲取更多信息。

5

嘗試使用/Tp選項,以便VC++認爲您的源文件是C++代碼而不是C.這樣,您不必更改文件擴展名。

+1

+1,但VC++允許從void指針隱式轉換嗎?這會導致錯誤。 – alternative 2010-09-06 14:48:39

+0

@Mathepic:這只是爲了避開第一個錯誤,毫無疑問他會在之後發生其他錯誤。 – 2010-09-06 15:28:21

+0

至少他會被迫進入C語言和C語言交叉的C語言,並被修改爲CLR構建的假設。但第一步是讓編譯器嘗試,而且它只能爲CLR編譯C++是一個關鍵事實。 – RBerteig 2010-09-06 21:48:34