2009-12-31 6 views
5

Ich möchte einige Dateien (Textdateien, vielleicht Grafiken) in einem C++/CLI-Projekt einbetten - vorzugsweise so wie ich es in C# -Projekt tun kann. Dies könnte jedoch unmöglich sein, wie ich in diesem Beitrag gefunden habe: http://bytes.com/topic/net/answers/571530-loading-markup-xamlreader-load-resource-file#post2240705. Das wurde vor drei Jahren geschrieben, vielleicht gibt es jetzt einen Weg, dies zu tun (in VS2k8)?Einbetten von Ressourcen in ein C++/CLI-Projekt

Antwort

11

Unter C++/Cli-Projekt gehen Sie zu "Eigenschaften ...", dann schauen Sie unter "Linker" und dann "Eingabe", Sie sehen die Liste der eingebetteten Dateien unter "Embed Managed Resource File".

+5

Wenn Sie eine Datei hier test.dat genannt hinzufügen, dann können Sie es wie folgt zugreifen: Stream-^ stm = Assembly :: GetExecutingAssembly() -> GetManifestResourceStream ("test.dat"); – Tarydon

+1

Überprüfen Sie auch auf Nullptr nur für den Fall. –

1

Dies ist eine Verschönerung von Tarydon Kommentar, das zeigt, wie die eingebettete Ressource in eine Datei speichern:

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? 
} 
1

Go auf Dateieigenschaften, Allgemeine, Medienart, wählen Zusammengestellt Verwaltete Ressourcen

Arbeiten in VS2013

Um Ressource in Programm zuzugreifen:

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