Dar*_*fer 4 c# visual-studio-express c-preprocessor
我有一段从codeProject下载的代码.
该#if预处理指令似乎并没有工作就像我本来期望它的工作.
我没有在MyProject中定义DSHOWNET >>属性>>构建选项卡>>条件编译符号(对话框为空)
在下面的代码中,在构建项目时显示无法找到错误DShowNET.由于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
Run Code Online (Sandbox Code Playgroud)
#if预处理器指令是否在Visual Studio Express版本中有效?DSHOWNET是否需要明确"未定义"?还是我错过了其他一些基本概念?
我下载了示例抓取器项目并将其放在我的系统上.(我正在使用企业VS.)我打开CaptureTest-2005解决方案,将其转换为VS2010解决方案,并加载它.加载CaptureTest-2005解决方案后,我仍然看到了与您所看到的问题相同的文件.
所以,我发现,尽管CaptureTest-2005项目没有DSHOWNET在Build页面上定义,但DirectX.Capture-2005项目确实如此.因此,对于所有文件DirectX.Capture-2005,DSHOWNET指令计算为true,因此#if DSHOWNET指令中的项目正在处理中.
我不确定解决方案是否只需要构建和使用DSHOWNETCodeProject下载的部分,(例如,我不确定是否DirectX.Capture需要)但我想,既然DirectX.Capture项目已经定义,那么你将需要构建和使用该程序集来运行项目.(可能有一种解决方法,我没有走得那么远.我建议检查项目页面,看看是否有关于什么取决于什么的信息.)
希望这可以帮助!