簡體   English   中英

Visusal Studio 2010 Express 中忽略了 C# 預處理器指令?

[英]C# preprocessor directive ignored in Visusal Studio 2010 Express?

我從codeProject下載了一段代碼。

#if預處理器指令似乎不像我預期的那樣工作。

我沒有在 MyProject >> 屬性 >> 構建選項卡 >> 條件編譯符號中定義 DSHOWNET(對話框為空)

在下面的代碼中,在構建項目時會顯示錯誤DShowNET could not be found 由於 DSHOWNET 從未被定義,我很驚訝“使用 DShowNET”甚至被處理了。

using System;
using System.Collections;
using System.Runtime.InteropServices;
#if DSHOWNET
using DShowNET;
using DShowNET.Device;
#else
#if VS2003
#else
using System.Runtime.InteropServices.ComTypes;
#endif
using DirectShowLib;
#endif

#if 預處理器指令是否適用於 Visual Studio Express 版本? DSHOWNET 是否需要明確“未定義”? 還是我錯過了其他一些基本概念?

我下載了示例抓取器項目並將其放在我的系統上。 (我使用的是 Enterprise VS。)我打開CaptureTest-2005解決方案,將其轉換為 VS2010 解決方案,然后加載它。 加載CaptureTest-2005解決方案后,我仍然看到與您看到的問題相同的文件。

所以,我發現,雖然CaptureTest-2005項目沒有在 Build 頁面上定義DSHOWNET ,但DirectX.Capture-2005項目卻有。 因此,對於DirectX.Capture-2005中的所有文件, DSHOWNET指令評估為真,因此正在處理#if DSHOWNET指令中的項目。

我不確定該解決方案是否只需要您構建和使用 CodeProject 下載的DSHOWNET部分(例如,我不確定是否需要DirectX.Capture )但我想,因為DirectX.Capture項目已經定義了它,您將必須構建並使用該程序集來運行該項目。 (可能有辦法解決它,我還沒有深入研究。我建議檢查項目頁面,看看是否有關於什么取決於什么的信息。)

希望這可以幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM