2012-01-19 32 views
19

我在我的C項目中使用了預編譯頭文件,但我們正在將.CPP文件整合到項目中。混合C和C++預編譯頭文件

這裏的錯誤:

Error 1 fatal error C1853: 'Debug\MuffinFactory.pch' precompiled header 
file is from a previous version of the compiler, or the precompiled header is C++ 
and you are using it from C (or vice versa)  
c:\users\blake\desktop\projects\muffinfactory\source\main.cpp 1 

我們只需要在我們的項目編制一個.CPP,但我們真的需要預編譯頭,以節省編譯時間(WINDOWS.H和更多)。

我該如何組織我的項目來做到這一點?

+0

你可以將C編譯爲C++嗎? –

+1

這不太可能是你試圖像這樣結合的最後一個問題。通常的問題是試圖將一些.C插入到C++項目中,而不是相反。 –

+0

新手stdafx.h - http://www.viva64.com/en/b/0265/ – 2014-07-15 07:33:29

回答

19

所以不要使用預編譯頭文件的單個文件!

作爲一個.cpp文件,它將有單獨的編譯選項。

+0

請解釋一下你回覆@ Persson –

+0

@nafeeur這是很久以前的事了,但我相信這個想法是C和C++可能需要不同的編譯器選項,所以預編譯的頭文件對於兩個集合都是不可用的編譯器接受它)。因此,只需分別編譯單個CPP文件,並且不要爲其使用預編譯頭。 –

5

您可能可以在您的項目中創建兩個預編譯頭。每個源文件都有一個屬性,用於確定是要使用預編譯頭還是生成預編譯頭 - 嘗試設置兩個不同的源以生成頭。

+0

不錯的選擇!不過需要一點點的操作.vcproj。 –

+10

額外信息:從解決方案資源管理器中選擇您不想使用的「預編譯頭」 - >右鍵單擊 - >在預編譯頭選項下,選擇不使用預編譯頭 – Zuuum

+0

感謝Zuuum在我混合c& VS中的C++。 – Gob00st

1

嘗試創建一個單獨的C++預編譯頭文件(比如MuffinFactoryCpp.h,它是另一個的副本)。查看「預編譯頭文件」下的項目設置,並將此新頭文件用作C++源文件的預編譯頭文件。

0

我剛剛查找錯誤在這裏,發現這個線程。但是,經過反覆試驗,我發現問題是我沒有最近保存所有文件。看起來Visual Studio對保存連接在一起的文件的日期有點挑剔。

我繞過所有源文件的Ctrl + S,並解決了問題。