Tengo una DLL que expone varias funciones y me gustaría hacer una DLL duplicada con el mismo nombre que exponga exactamente las mismas funciones pero con mi propia implementación de cada función.
En este caso, las funciones no harán nada, ya que el propósito es estudiar la funcionalidad para las pruebas unitarias.
Me preguntaba si hay alguna herramienta que pueda tomar una DLL existente y crear un nuevo proyecto C++ (idealmente, Visual C++) que exponga la misma interfaz.
Podría hacerlo manualmente (usando Dependency Walker , también conocido como Depends.exe , para ver las funciones y parámetros expuestos), pero sería mucho más fácil si hubiera una herramienta automatizada para hacerlo.
Lo que necesita es en realidad el llamado "Proxy-DLL".
Hay algunas soluciones en la web. Mi favorito es un script de AutoIt publicado (ruso, primer enlace binario, segundo origen) en Habrahabr, que crea un proyecto de VisualStudio 2008/2010 para cualquier archivo DLL. Todas las funciones se reenvían a la DLL original, probablemente desee sobrescribir algunas de ellas.
Creo que no debería ser increíblemente difícil usar algunas secuencias de comandos y hacerlo. No estoy describiendo una solución completa aquí, más como un boceto (ya que no hago desarrollo en Windows), pero:
sed
o grep
+cut
echo
una plantilla, sustituyendo algunas variables por lo que ha obtenido como firma. Y antes de escribir cualquier otra cosa en él, escriba el encabezado inicial que desee.Ese es el código en sí. En cuanto al archivo del proyecto MSVC, está solo averiguando cómo generarlo.
Mawg dice que reincorpore a Monica