2009-12-31 6 views
5

Me gustaría incrustar algunos archivos (archivos de texto, tal vez gráficos) en un proyecto C++/CLI, preferiblemente de la misma manera que lo puedo hacer en el proyecto C#. Sin embargo, esto podría ser imposible, como he encontrado en esta publicación: http://bytes.com/topic/net/answers/571530-loading-markup-xamlreader-load-resource-file#post2240705. Esto fue escrito hace tres años, así que tal vez ahora hay alguna forma de hacerlo (en VS2k8)?Recurso de incrustación en un proyecto de C++/CLI

Respuesta

11

En el proyecto C++/Cli, vaya a "Propiedades ...", luego mire debajo de "Enlazador", y luego "Entrada", verá la lista de archivos incrustados en "Incrustar archivo de recursos administrados".

+5

Si se agrega un archivo llamado aquí test.dat, entonces se puede acceder a él de esta manera: Corriente^STM = Asamblea :: GetExecutingAssembly() -> GetManifestResourceStream ("test.dat"); – Tarydon

+1

Además, compruebe nullptr por si acaso. –

1

Este es un adorno del comentario de Tarydon, que muestran cómo ahorrar el recurso incrustado en un archivo:

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

Ir a presentar propiedades, general, Tipo artículo, seleccionar Compilado Recursos Manejados

Obras en VS2013

Para acceder a los recursos en el programa:

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