【问题标题】:Problems extending the marshal library扩展元帅库的问题
【发布时间】:2014-10-22 13:39:21
【问题描述】:

我正在用 c++/cli 编写一个在 C# 和 CryptoAPI 之间进行转换的项目。正因为如此,我不得不来回做很多封送处理,在某些情况下,我扩展了封送处理库以使其中一些更容易。在某些情况下,当我编译时,我会收到以下消息:

错误 C4996: 'msclr::interop::error_reporting_helper ^,_From_Type,false>::marshal_as': 不支持这种转换 此转换所需的库或头文件不是 包括。请参阅有关“如何:扩展 Marshaling Library' 用于添加您自己的编组方法。 C:\程序 文件 (x86)\Microsoft Visual Studio 12.0\VC\include\msclr\marshal.h

我知道错误的含义,在某些情况下,这是因为我忘记为类添加标题。然而,如果不是这样,这个错误很难追查到。由于实际错误指向 marshal.h 文件内部,因此没有任何线索(我可以看到)实际问题出在哪里。我发现解决此问题的唯一方法是每次编写使用编组的代码行时,我必须停止并编译以确保特定行是正确的。你可以想象这让我慢了多少。有谁知道找到此错误发生位置的更好方法?

【问题讨论】:

    标签: c++-cli marshalling


    【解决方案1】:

    当我尝试这个时,它确实向我报告了一个行号。你能举个例子吗?

    我的测试代码:

    int main(array<System::String ^> ^args)
    {
        int i = 7;
        std::string foo = marshal_as<std::string>(i);
    }
    

    构建输出:

    ------ 构建开始:项目:QuickieCppCLI,配置:Debug x64 ------ QuickieCppCLI.cpp C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\msclr\marshal.h(237):错误 C4996:'msclr::interop::error_reporting_helper::marshal_as':此转换不受不包括此转换所需的库或头文件。请参阅有关“如何:扩展编组库”的文档以添加您自己的编组方法。 和 [ _To_Type=std::string, _From_Type=int ] C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\msclr\marshal.h(217) :参见“msclr::interop::error_reporting_helper::marshal_as”的声明 和 [ _To_Type=std::string, _From_Type=int ] QuickieCppCLI.cpp(114) :参见正在编译的函数模板实例化 '_To_Type msclr::interop::marshal_as(const _From_Type &)' 的参考 和 [ _To_Type=std::string, _From_Type=int ] ========== 构建:0 成功,1 失败,0 最新,0 跳过 ==========

    注意倒数第 7 行:QuickieCppCLI.cpp(114) : see reference to function template instantiation...。这就是我的主要方法中的marshal_as 行。

    【讨论】:

    • 我没有看到那么多信息,但我确信我只是没有看到它。感谢您的帮助。
    • @DrewBurcett:关闭问题列表、错误列表等。它对模板错误毫无用处。使用构建输出,它看起来像 David Yaw 粘贴的内容。问题是所有说“with”或“see reference to”的东西实际上都不是错误,所以它不会显示在错误列表中。 (此外,试图将所有这些都放在列表框中的一行中并不会很好地结束)。只需查看实际的编译器输出。
    • @DrewBurcett 要显示输出窗口,请转到工具::选项、项目和解决方案,选中“构建开始时显示输出窗口”,并清除“如果构建完成出现错误,则始终显示错误列表” .我总是隐藏错误列表,所以有时我会忘记它没有显示完整的错误文本。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-25
    相关资源
    最近更新 更多