新的 (.NET Core) C++/CLI 项目在定义和实现分离时存在编译问题
New (.NET Core) C++/CLI project has compile issues when definition and implementation are split
我使用 Visual Studio 2019 创建了一个 "CLR Empty Project (.Net Core)"
项目。
我只是使用 'add class' 菜单选项创建了一个新的 class,它生成了这个 class。
我在 header:
中添加了名为 Test
的函数
using namespace System;
public ref class Class1 {
// TODO: Add your methods for this class here.
void Test();
};
然后使用 visual studio 的生成实现选项在 .cpp 文件中创建了这个函数定义:
#include "EngineEditorLayer.h"
#include "pch.h"
void Class1::Test() { throw gcnew System::NotImplementedException(); }
编译时出现这个错误:
error C2653: 'Class1': is not a class or namespace name
我只能通过将实现移至 header 文件来解决此错误。
我错过了什么吗?是否需要更改设置才能启用 .cpp 编译?
目前是否存在阻止我执行此操作的编译器错误?
评论中的 Hans Passant 是正确的。必须首先包含 pch.h。
不幸的是,我从未收到警告。这是我的输出日志:
1>------ Build started: Project: EngineEditorLayer, Configuration: Debug x64 ------
1>EngineEditorLayer.cpp
1>E:\Other Projects\PixEngine\EngineEditorLayer\EngineEditorLayer.cpp(7,18): error C2653: 'Class1': is not a class or namespace name
1>Done building project "EngineEditorLayer.vcxproj" -- FAILED.
我使用 Visual Studio 2019 创建了一个 "CLR Empty Project (.Net Core)"
项目。
我只是使用 'add class' 菜单选项创建了一个新的 class,它生成了这个 class。 我在 header:
中添加了名为Test
的函数
using namespace System;
public ref class Class1 {
// TODO: Add your methods for this class here.
void Test();
};
然后使用 visual studio 的生成实现选项在 .cpp 文件中创建了这个函数定义:
#include "EngineEditorLayer.h"
#include "pch.h"
void Class1::Test() { throw gcnew System::NotImplementedException(); }
编译时出现这个错误:
error C2653: 'Class1': is not a class or namespace name
我只能通过将实现移至 header 文件来解决此错误。
我错过了什么吗?是否需要更改设置才能启用 .cpp 编译? 目前是否存在阻止我执行此操作的编译器错误?
评论中的 Hans Passant 是正确的。必须首先包含 pch.h。
不幸的是,我从未收到警告。这是我的输出日志:
1>------ Build started: Project: EngineEditorLayer, Configuration: Debug x64 ------
1>EngineEditorLayer.cpp
1>E:\Other Projects\PixEngine\EngineEditorLayer\EngineEditorLayer.cpp(7,18): error C2653: 'Class1': is not a class or namespace name
1>Done building project "EngineEditorLayer.vcxproj" -- FAILED.