C/Visual C - Integrar archivo en el ejecutable

 
Vista:

Integrar archivo en el ejecutable

Publicado por Jonathan (1 intervención) el 25/05/2003 00:50:11
Hola.

Me gustaria saber si hay alguna manera de integrar un archivo, del tipo que sea en el ejecutable, para asi despues poder copiarlo al disco duro desde el mismo ejecutable.

Y luego, cómo puedo copiarlo en un archivo creado con el ejecutable?

Tiene algo que ver con escribir un archivo en binario?

Gracias de antemao
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Integración y copia de archivos en ejecutables

Publicado por Alejandro (1286 intervenciones) el 24/06/2025 18:37:37

Solución 1: Integrar un archivo en el ejecutable


Para integrar un archivo en un ejecutable en Visual C, puedes utilizar recursos. Aquí te dejo un enfoque básico:

1. Agregar el archivo como recurso:
- En tu proyecto de Visual C, haz clic derecho en "Resource Files" y selecciona "Add Resource".
- Elige "Import" y selecciona el archivo que deseas integrar.
- Asigna un identificador único a este recurso.

2. Acceder al recurso en el código:
- Utiliza la función `FindResource` para localizar el recurso y `LoadResource` para cargarlo en memoria.
- Luego, puedes escribir el contenido del recurso en un archivo en el disco duro.

1
2
3
4
5
6
7
8
9
HRSRC hResource = FindResource(hInstance, MAKEINTRESOURCE(IDR_MYFILE), RT_RCDATA);
HGLOBAL hLoadedResource = LoadResource(hInstance, hResource);
void* pResourceData = LockResource(hLoadedResource);
DWORD resourceSize = SizeofResource(hInstance, hResource);
 
// Escribir el recurso en un archivo
std::ofstream outFile("ruta/del/archivo.ext", std::ios::binary);
outFile.write(static_cast<char*>(pResourceData), resourceSize);
outFile.close();

Solución 2: Copiar el archivo en un archivo creado con el ejecutable


Para copiar el archivo que has integrado en el ejecutable a un archivo creado por el mismo ejecutable, puedes seguir estos pasos:

1. Crear el archivo:
- Usa `std::ofstream` para crear un nuevo archivo en el disco duro.

2. Escribir el contenido:
- Utiliza el mismo método que mencioné anteriormente para acceder al recurso y escribirlo en el archivo creado.

1
2
3
std::ofstream newFile("ruta/del/nuevo_archivo.ext", std::ios::binary);
newFile.write(static_cast<char*>(pResourceData), resourceSize);
newFile.close();

Nota sobre archivos en binario


Sí, efectivamente, al trabajar con archivos que no son de texto (como imágenes, audio, etc.), es recomendable manejarlos en modo binario. Esto asegura que los datos se copien correctamente sin alteraciones.

Espero que estas soluciones te sean útiles, Jonathan.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar