【发布时间】: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