【问题标题】:C++ Program E0079 expected a type specifierC++ 程序 E0079 需要一个类型说明符
【发布时间】:2017-12-14 15:09:35
【问题描述】:

我有一个来自 USB 3.0 接口供应商的 c++ 示例项目,称为来自 cypress fx3 的流媒体应用程序。我想让它首先运行并查看应用程序背后的潜力,但不幸的是,我在 Visual Studio 2017 中构建时遇到了一整套错误。

我在主文件 streamer.cpp 中遇到错误,显示错误:

错误(活动)E0079 需要类型说明符第 26 行
错误(活动)E1986 指向 C++/CLI 引用类或接口的普通指针>不允许类第 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;
}

Form 1 是 streamer.h 的一部分。在 streamer h 中,错误量超过 400。 大多数情况下,编译器会告诉我预期的标识符(E0040),即使对于私有和公共这样的语法也是如此。那么“this”操作符就会报错:

错误(活动)E0258 'this' 只能在非静态成员 >function 中使用

我试图让它运行:
- 通过 windows 系统控制中的安装例程安装缺少的 windows sdk 版本 8.1
- 将公共语言运行时支持更改为 /clr
- 包括所有丢失的头文件,编译器现在正在寻找这些头文件。

在我看来,源项目中缺少一些东西。你能把我推向正确的方向吗?

【问题讨论】:

  • 这是 C++/CLI,不是 C++。不要标记不相关的标签。

标签: visual-studio c++-cli


【解决方案1】:
catch (Exception *e)

这是一个非托管异常。你需要捕获一个托管异常:

catch (Exception^ e)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    • 2023-04-01
    • 2018-01-09
    相关资源
    最近更新 更多