我正在使用Visual Studio 2010 SP1。我注意到我可以將屬性表添加到項目中,但我無法更改這些屬性表中的字符集。我創建的任何屬性表都缺少'字符集'選項。Visual Studio屬性表:爲什麼缺少字符集?
任何人都可以解釋爲什麼我不能使用屬性表設置字符集?是否有一些不能使用屬性表設置的禁用屬性列表?
謝謝
我正在使用Visual Studio 2010 SP1。我注意到我可以將屬性表添加到項目中,但我無法更改這些屬性表中的字符集。我創建的任何屬性表都缺少'字符集'選項。Visual Studio屬性表:爲什麼缺少字符集?
任何人都可以解釋爲什麼我不能使用屬性表設置字符集?是否有一些不能使用屬性表設置的禁用屬性列表?
謝謝
好吧,我做了一些搜索我的硬盤驅動器,找到了答案。
項目默認值是字符集的一部分,它定義要繼承哪些默認的MSBuild屬性表。因此,當您在項目中選擇字符集時,您不會更改項目文件中的預處理器定義,而是您的項目文件將繼承字符集屬性表,從而更改這些定義。如果您不選擇字符集,則不會繼承屬性表。
的Unicode和MBCS屬性表位於這裏:
C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\Microsoft.Cpp.MultiByteCharSupport.props
C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\Microsoft.Cpp.unicodesupport.props
的MBCS屬性表只增加_MBCS到編譯器的預處理器定義(C/C++預處理器定義)。 Unicode屬性表只將UNICODE和_UNICODE添加到編譯器的預處理器定義(C/C++預處理器定義)和資源編譯器的定義(資源預處理器定義)中。就是這樣。
感謝您發佈解決方案。我有完全相同的問題。 – criddell
謝謝,這適用於VS2010。不幸的是,我們已經轉移到2013年,現在得到一個錯誤,「錯誤MSB8031:建立一個非Unicode字符集的MFC項目已棄用。您必須將項目屬性更改爲Unicode或下載一個額外的庫。即使我們通過包含Microsoft.Cpp.unicodesupport.props –
來構建unicode進一步,這是因爲C:\ Program Files(x86)\ MSBuild \ Microsoft.Cpp \ v4.0 \ V120 \ Microsoft .CppBuild.targets通過查看CharacterSet來檢查您是否使用MBCS,而不是查看是否定義了UNICODE。我通過將
你是什麼意思「可以添加屬性表」?你是如何創建該項目的? – Ajay
@Ajay我的意思是任何項目。這不是特定於項目或解決方案。儘管我可以更改項目中的字符集,但我無法在項目的屬性表中更改它。例如,我想在字符集之間切換多個項目。我不是要爲每個單獨的項目執行此操作,而是嘗試通過屬性表完成此操作。我確定這可以通過預處理器定義部分,但我想知道爲什麼字符集丟失。 – loop
你的問題仍然模糊!我的提示:選擇多個項目,選擇多個配置,然後設置選項。你在尋找_UNICODE/UNICODE嗎? – Ajay