【问题标题】:Embedding resource in a C++/CLI project在 C++/CLI 项目中嵌入资源
【发布时间】:2015-05-21 05:00:46
【问题描述】:

我想在 C++/CLI 项目中嵌入一些文件(文本文件,也许是图形)——最好是我可以在 C# 项目中执行的相同方式。然而,这可能是不可能的,正如我在这篇文章中发现的那样:http://bytes.com/topic/net/answers/571530-loading-markup-xamlreader-load-resource-file#post2240705。这是三年前写的,所以也许现在有一些方法可以做到这一点(在 VS2k8 中)?

【问题讨论】:

    标签: visual-studio-2008 c++-cli


    【解决方案1】:

    在 C++/Cli 项目下转到“Properties...”,然后查看“Linker”下,然后“Input”,您将在“Embed Managed Resource File”下看到嵌入文件的列表。

    【讨论】:

    • 如果在此处添加一个名为 test.dat 的文件,则可以这样访问:Stream^ stm = Assembly::GetExecutingAssembly()->GetManifestResourceStream ("test.dat");跨度>
    • 另外,检查 nullptr 以防万一。
    【解决方案2】:

    这是对 Tarydon 评论的点缀,展示了如何将嵌入的资源保存到文件中:

    using namespace System::IO;
    ...
    String^ tmpFilename = System::IO::Path::GetTempFileName();
    try
    {
       Stream^ readStream = Assembly::GetExecutingAssembly()->GetManifestResourceStream("embedded_file_name.xyz");
       if(readStream != nullptr)
       {
           FileStream^ writeStream = gcnew FileStream(tmpFilename, FileMode::Create);
           readStream->CopyTo(writeStream);
           readStream->Close();
           writeStream->Close(); // Required to flush the buffer & have non-zero filesize
       }
    }
    catch (...)
    {
        // Do something?
    }
    

    【讨论】:

      【解决方案3】:

      转到文件属性,常规项目类型,选择Compiled Managed Resource

      适用于 VS2013

      访问程序中的资源:

      Stream^ stream = Assembly::GetExecutingAssembly()->GetManifestResourceStream("file.txt");
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-09-10
        • 2011-10-30
        • 1970-01-01
        • 2020-05-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多