1

我正在玩 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 版本......)谢谢。

4

0 回答 0