我正在玩 C++/CLI 和 WPF,因为我很无聊。我正在尝试针对 .net 3.0 进行此游戏。我想处理一个 System.Windows.Window 的 Closing 事件;如果我尝试,cl.exe 会抱怨 CancelEventHandler 和 CancelEventArgs。
这是一个简单的复制:
// 24 november 2015
#using <WindowsBase.dll>
#using <PresentationCore.dll>
#using <PresentationFramework.dll>
using namespace System;
using namespace System::ComponentModel;
int main(void)
{
CancelEventArgs ^e;
e = gcnew CancelEventArgs();
e->Cancel = true;
System::Console::WriteLine(e->Cancel);
return 0;
}
编译
cl /clr /AI "c:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\v3.0" xtest.cpp
在 x86 构建工具命令行中,我得到
xtest.cpp(10) : error C2065: 'CancelEventArgs' : undeclared identifier
xtest.cpp(12) : error C2061: syntax error : identifier 'CancelEventArgs'
(以及由于未声明而导致的其他错误e
)。如果我改变
CancelEventArgs ^e;
至
System::ComponentModel::CancelEventArgs ^e;
然后我也得到
xtest.cpp(10) : error C2039: 'CancelEventArgs' : is not a member of 'System::ComponentModel'
发生什么了?我所做的每一次搜索都表明这两种类型肯定在 System.ComponentModel 中......
这适用于 Windows 7 64 位上的 Visual Studio 2013。编译器的版本序言是
Microsoft (R) C/C++ Optimizing Compiler Version 18.00.30723
for Microsoft (R) .NET Framework version 4.00.30319.18444
Copyright (C) Microsoft Corporation. All rights reserved.
(我可能也没有正确使用 .net 版本......)谢谢。