【问题标题】:C++ CLI gcnew undeclared identifierC++ CLI gcnew 未声明的标识符
【发布时间】:2011-10-18 01:38:50
【问题描述】:
String* response_Page="";
std::string http_Response;

//WinHttp Request
//http_Response append (pszOutBuffer);

response_Page = gcnew System::String(respstring);

我正在尝试创建一个用于 c# 的托管 C++/CLI dll,这是 C++ 的新手,它真的很复杂,仅通过搜索无法获得太多信息。

更新:我正在使用 公共语言运行时支持,旧语法 (/clr:oldSyntax)

出现错误:错误 C2065: 'gcnew' : undeclared identifier

【问题讨论】:

    标签: c# windows c++-cli managed


    【解决方案1】:

    您需要使用 ^ 而不是 * 才能使用 gcnew。如果您需要非托管指针,请使用 * 和 new

    String^ response_Page="";
    

    此外,还有很多 C++/CLI 书籍;你应该考虑买一个。电子书格式可用。 http://manning.com/http://www.apress.com/

    • C++/CLI 实战(曼宁)
    • C++/CLI .NET 的 Visual C++ 语言 (Apress)
    • Pro Visual C++/CLI 和 .NET 2.0 平台 (Apress)
    • Visual C++/CLI 专家:面向 Visual C++ 程序员的 .NET(Apress)
    • C++/CLI 基础:.NET 3.5 (Apress) 的 Visual C++ 语言
    • Pro Visual C++/CLI 和 .NET 3.5 平台 (Apress)

    【讨论】:

    • 这意味着不使用 /oldSyntax :)
    【解决方案2】:

    错误是由使用带有 /clr:oldSyntax 编译器选项的新样式托管 C++ 语法引起的。使用旧样式语法或使用新样式语法,不要使用 oldSyntax 标志。

    使用 oldSyntax 标志的唯一原因是您要维护旧代码。除了这个原因,避免使用旧语法,这很糟糕。

    【讨论】:

    • 是否可以在新样式语法中创建可以在c#中使用的托管dll
    • @Milan:是的,这当然是可能的。不要忘记 .Net 运行时的版本需要在 DLL 和应用程序之间兼容。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多