c++ - una - crear dll
Cómo hacer un archivo.lib cuando tiene un archivo.dll y un archivo de cabecera (3)
Intento crear una aplicación en Visual Studio que pueda acceder a un archivo .dll que ya existe. Necesito la aplicación para llamar a las rutinas. También tengo un archivo de encabezado que ya existe.
He estado investigando en Internet y he descubierto que necesito crear un archivo .lib. Mirando preguntas similares aquí encontré un enlace: http://support.microsoft.com/kb/131313 No obstante, no puedo seguir las instrucciones.
La información en el enlace dice que se debe hacer un archivo DEF (¿He leído en otro lugar que esto debe compilarse como un archivo DLL con el mismo nombre, pero no estoy seguro de cuál es ese nombre, el mismo nombre que el archivo .dll?). Pero no entiendo la primera dirección, a "Usar DUMPBIN / EXPORTS". Luego necesito ''colgar'' las funciones, y luego algo relacionado con los archivos .OBJ (no sé qué son estos archivos).
¿Hay instrucciones paso a paso, similares al enlace anterior, que sean fáciles de seguir?
En lugar de crear .def, puede crear un archivo .lib a partir del archivo .dll exportando las funciones / clases definidas en el archivo .dll por __declspec (dllexport) que se mencionaron en el código de la aplicación.
Por ejemplo (Pseudo código)
PROYECTO para crear un archivo X.dll (digamos, X es un nombre dll):
Ah:
// Function declaration
__declspec(dllexport) void foo(void);
A.cpp:
// Function definition
#include <A.h>
void foo(void) {
; // definition
}
Si construye el proyecto dll anterior en Visual Studio, el compilador generará X.dll y también X.lib [que exportó la función foo por __declspec (dllexport)].
App.cpp:
// Load time dynamic linking:
// Application should include X.lib (not X.dll) in the project setting
#include <A.h>
int main() {
foo();
return 0;
}
Para obtener más información, consulte los siguientes enlaces para una mejor comprensión:
http://www.codeproject.com/Articles/28969/HowTo-Export-C-classes-from-a-DLL#CppMatureApproach
http://msdn.microsoft.com/en-us/library/ms686923(v=vs.85).aspx
Necesitará Microsoft Visual C ++ 2010 Express (o cualquier otra fuente de herramientas de línea de comandos de MSVC) y su DLL.
Pasos:
dumpbin /EXPORTS yourfile.dll > yourfile.exports
- Pegue los nombres de las funciones necesarias de
yourfile.exports
en un nuevo archivoyourfile.def
. Agregue una línea con la palabraEXPORTS
en la parte superior de este archivo. - Ejecute los siguientes comandos desde el directorio
VC/bin
(aquel en el quelib.exe
y otras herramientas de compilación).
vcvars32.bat
lib /def:yourfile.def /out:yourfile.lib
Debería obtener dos archivos generados: yourfile.lib
y yourfile.exp
Puede usar la herramienta IMPLIB de Mars Digital. Puede crear un archivo lib usando solo el dll, sin necesidad de un archivo .def.
El enlace de descarga es http://ftp.digitalmars.com/bup.zip .
La línea de comando es:
implib.exe /s mydll.lib mydll.dll