我有一个来自USB 3.0接口供应商的c ++示例项目,名为来自cypress fx3的流光应用程序。我想先让它运行,然后看看应用程序背后的潜力,但是当我在Visual Studio 2017中构建时,我得到了一整套错误。
我在主文件streamer.cpp中收到错误,向我显示错误:
代码中的错误(活动)E0079期望类型说明符第26行 错误(活动)E1986指向C ++ / CLI ref类或接口>类的普通指针不允许第28行
:
#include "stdafx.h"
#include <windows.h>
// windows.h includes WINGDI.h which
// defines GetObject as GetObjectA, breaking
// System::Resources::ResourceManager::GetObject.
// So, we undef here.
#undef GetObject
#include "Streamer.h"
#undef MessageBox
using namespace System::Windows::Forms;
using namespace Streams;
int APIENTRY _tWinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
{
System::Threading::Thread::CurrentThread->ApartmentState =
System::Threading::ApartmentState::STA;
try
{
Application::Run(new Form1()); // THIS IS LINE 26
}
catch (Exception *e) // THIS IS LINE 28
{
MessageBox::Show(e->StackTrace,e->Message);
}
return 0;
}
表格1是streamer.h的一部分。在流媒体中,误差量超过400。 大多数情况下,即使对于私有和公共语法,编译器也会告诉我标识符(E0040)。然后“this”运算符导致错误:
错误(有效)E0258'this'只能在非静态成员中使用&gt;功能
我试图让它运行起来:
- 通过Windows系统控制中的安装例程安装缺少的Windows sdk版本8.1
- 将公共语言运行时支持更改为/ clr
- 包括所有缺少的头文件,编译器现在找到这些头文件。
在我看来,源项目中缺少一些东西。你能把我推向正确的方向吗?
答案 0 :(得分:0)
catch (Exception *e)
这是一个非托管的例外。您需要捕获托管例外:
catch (Exception^ e)