alguna alternativa a ilmerge pero para c++?

Iniciado por Borito30, 13 Enero 2018, 23:16 PM

0 Miembros y 1 Visitante están viendo este tema.

Borito30

En la anterior pregunta no me explique bien lo que estoy buscando es alguna manera de usar mis librerias como recurso embedido en lugar de referencias como cuando uno usa ilmerge pero para c++- Es decir por ejemplo tengo varias dependencias en c++ nativo y quiero que estas dependencias sean incorporadas al fichero como recurso embebido en mi proyecto/programa en c++. Es posible alguna manera facil de resolver estas dependencias como uno en net pero solamente en nativo/managed? Lei sobre costura/fuddy/resource embedder pero no estoy seguro si funcionará en mi proyecto en c++?

necesito que sea recurso no libreria estatica! alguna solucion ! para c++?
saludosss
Estoy en contra del foro libre y la Sección de juegos y consolas (distraen al personal)

kub0x

Lo primero es añadir la DLL como recurso dentro del ejecutable. Segundo cargar el recurso en runtime en un buffer.

Ahora tienes dos formas de cargar dicha DLL en runtime:

La primera es escribir el buffer en disco con formato .DLL. Después cargas la DLL con LoadLibrary y listo. El problema es que guarda en disco, podrias Unlodear la lib al final de la ejecucción y borrarla de disco antes de que termine el programa.

La segunda es implementar tu mismo un loader que cargue la lib en runtime, así no escribes en disco. La ventaja de la primera es que el loader de Win$ ya te la carga. El loader tendrá que mapear la DLL en la memoria virtual del proceso y tener en cuenta ciertos parámetros de las cabeceras PE. Hay material de sobra acerca de esto.

Para llenar un buffer en runtime con el contenido del recurso mira esto: https://stackoverflow.com/questions/9240188/how-to-load-a-custom-binary-resource-in-a-vc-static-library-as-part-of-a-dll

Saludos!
Viejos siempre viejos,
Ellos tienen el poder,
Y la juventud,
¡En el ataúd! Criaturas Al poder.

Visita mi perfil en ResearchGate


Borito30

hola kub0x me parece interesante esto que dices. como dices puedo crear un buffer y mapear mi dll.
sin son varias se complica un poco la cosa.
o usar loadlibrary. lo cual tendría que hacer algun evento para que cargase varias.
Estoy en contra del foro libre y la Sección de juegos y consolas (distraen al personal)

kub0x

Cita de: Ragaza en 15 Enero 2018, 02:53 AM
hola kub0x me parece interesante esto que dices. como dices puedo crear un buffer y mapear mi dll.
sin son varias se complica un poco la cosa.
o usar loadlibrary. lo cual tendría que hacer algun evento para que cargase varias.

Así es, ya depende de tí cual elegir, si ves que el loader te va a retrasar porque es algo nuevo pues implementa la de LoadLibrary desde disco, total la funcionalidad será la misma y es el método común a no ser que tu proyecto sea un malware (escribir en disco lo haría más detectable).

Saludos!
Viejos siempre viejos,
Ellos tienen el poder,
Y la juventud,
¡En el ataúd! Criaturas Al poder.

Visita mi perfil en ResearchGate