En el Enlazador -> pestaña de propiedad Avanzada del proyecto DLL, verifique que el valor para Importar Biblioteca (el archivo .lib que está buscando) es correcto/razonable. El valor de esta propiedad determinará el nombre de la biblioteca de importación y dónde lo escribirá el vinculador.
También puede necesitar generar un archivo de definición de importaciones (.def) en su proyecto, o verificar los archivos de encabezado y asegurarse de que las funciones exportadas estén etiquetadas con el calificador __declspec (dllexport) en el archivo de encabezado. Esto normalmente se activan y desactivan mediante un # define como:
#ifdef MYAPI_EXPORTS
#define MYAPI_API __declspec(dllexport)
#else
#define MYAPI_API __declspec(dllimport)
#endif
void MYAPI_API foo(int bar);
Básicamente desea que el compilador para ver dllexport cuando se está construyendo la biblioteca, pero dllimport cuando su código de cliente se #including el archivo de cabecera. Si Visual Studio generó la estructura básica del proyecto, probablemente ya haya creado un #define adecuado para usar.
No es necesario que ambos creen el archivo .def y agreguen el dllexport, solo uno u otro. Yo prefiero este último Además, si elige usar un archivo .def, debe especificarlo en las propiedades de Enlazador de su proyecto de biblioteca.
El valor se establece en $ (TargetDir) $ (TargetName) .lib que es el mismo valor que otros dlls que tengo en el proyecto que sí funcionan. –
Eso es realmente extraño, ¿puedes agregar manualmente el interruptor de la línea de comando (en la hoja de propiedades de la línea de comandos) para especificar la biblioteca de importación? Como /IMPLIB:C:\MyDll.lib? – Jeremy
Agregué ese cambio tanto a la línea de comando del enlazador como a la línea de comando del compilador y no se ha creado el archivo especificado ... ¡simplemente se está negando a crear una lib!?! –