1

尝试编译使用本机库的 c++/cli 库时出现几个错误,并且 c++/cli 项目包括用于编组的 msclr 帮助程序。如果我添加以下标题

#include <msclr\marshal_cppstd.h>

我得到了错误

Error   1   error C2059: syntax error : '<class-head>'

还有其他几个人也在跟进。

语法错误指向外部(第 3 方)c++ lib 的头文件(因此我无法更改头文件)。

namespace SomeExternalLibNamespace
{
   namespace interface // problem might be here (interface is a keyword in c++/cli)
   {

如果我不包含 marshal_cppstd.h 并使用自己的方法手动进行编组,那么一切都可以编译并正常工作。

4

3 回答 3

1

问题是外部 c++ 库命名为命名空间接口。这是 c++/cli 中的关键字。这个库的 c++/cli-wrapper 的 Visual Studio 解析器/编译器在包含此库的 c++ 标头(以及名为interface的命名空间)并包括帮助程序的标头(例如在 marshap_cppstd.h 中)时会损坏。

如果不自己进行编组而不是使用 ms-helpers,我无法解决这个问题。

于 2013-05-28T11:52:41.947 回答
0

我的错,没有正确阅读它,如果'interface'确实是一个关键字,那么这显然是错误的原因,例如尝试使用:namespace interface_,然后重新编译以检查结果。

于 2013-03-08T10:46:00.070 回答
-2

您应该使用引号:“”来包含自定义头文件:

#include "msclr\marshal_cppstd.h"
于 2013-03-08T10:36:44.600 回答