项目构建失败:"gcroot.h This document is opened by another project"
Project fails to build: "gcroot.h This document is opened by another project"
我正在尝试使用以下教程为 C# class 构建 C++ 包装器:
pragmateek C++ wrapper for C# class
当我 运行 构建时,我得到这个错误:
Error C1001 An internal error has occurred in the compiler. [project name] C:\Program Files (x86)\Microsoft Visual Studio17\Enterprise\VC\Tools\MSVC.12.25827\include\msclr\gcroot.h 110
当我点击错误时,它会执行以下操作:
VS打开gcroot.h到第110行
void swap( gcroot<T> & _right )
{ //VS shows error on this line
using std::swap;
swap( _handle, _right._handle );
}
我收到多个弹出提示全部阅读:
"This document is opened by another project"
我正在使用 VS2017、.net 4.5
有什么我没看到的技巧吗?是否有更好或更多 modern/canonical 的方法来包装 .net class 以便在 C++ 中使用?我的最终目标是在 C# 中进行开发,并在 C++ 中为客户端提供 API。我的客户在项目中走得太远无法回头,然后失去了他们的 C# 人员,现在希望我将我的项目部分切换到 C++。
我已经在 google 上花费了大量时间。
更新:
添加以下任一项会导致它抛出错误:
#include <vcclr.h>
#include <msclr\auto_gcroot.h>
我遇到了同样的问题并找到了适合我的解决方案:
解法:
将包装器构建从 .exe 更改为 .dll
对比:
项目 Properties->Configuration properties->General->Configuration Type->Dynamic Link Library (.dll)
解释:
我遇到了同样的问题,并将 Project Properties->Configuration properties->C/C++->All Options->Conformance mode
从 Yes (/permissive-)
更改为 No
新版本指示链接器入口点错误:LNK1561
entry point must be defined
快速检查构建配置发现错误 Configuration Type
(exe 而不是 dll)
我正在尝试使用以下教程为 C# class 构建 C++ 包装器: pragmateek C++ wrapper for C# class
当我 运行 构建时,我得到这个错误:
Error C1001 An internal error has occurred in the compiler. [project name] C:\Program Files (x86)\Microsoft Visual Studio17\Enterprise\VC\Tools\MSVC.12.25827\include\msclr\gcroot.h 110
当我点击错误时,它会执行以下操作: VS打开gcroot.h到第110行
void swap( gcroot<T> & _right )
{ //VS shows error on this line
using std::swap;
swap( _handle, _right._handle );
}
我收到多个弹出提示全部阅读:
"This document is opened by another project"
我正在使用 VS2017、.net 4.5
有什么我没看到的技巧吗?是否有更好或更多 modern/canonical 的方法来包装 .net class 以便在 C++ 中使用?我的最终目标是在 C# 中进行开发,并在 C++ 中为客户端提供 API。我的客户在项目中走得太远无法回头,然后失去了他们的 C# 人员,现在希望我将我的项目部分切换到 C++。
我已经在 google 上花费了大量时间。
更新: 添加以下任一项会导致它抛出错误:
#include <vcclr.h>
#include <msclr\auto_gcroot.h>
我遇到了同样的问题并找到了适合我的解决方案:
解法: 将包装器构建从 .exe 更改为 .dll
对比:
项目 Properties->Configuration properties->General->Configuration Type->Dynamic Link Library (.dll)
解释:
我遇到了同样的问题,并将 Project Properties->Configuration properties->C/C++->All Options->Conformance mode
从 Yes (/permissive-)
更改为 No
新版本指示链接器入口点错误:LNK1561
entry point must be defined
快速检查构建配置发现错误 Configuration Type
(exe 而不是 dll)