VS2019: Vinculando funciones de biblioteca estática a DLL
Tengo tres proyectos en mi solución de Visual Studio: proyecto A, proyecto B y proyecto C. Los proyectos A y B se compilan a A.lib y B.lib respectivamente, mientras que el proyecto C se compila a C.dll. Me gustaría tomar las funciones de A.lib y B.lib y ponerlas en C.dll. ¿Qué puedo hacer para lograrlo? Tengo la sensación de que estoy utilizando __declspec(dllexport) en el momento incorrecto o que me estoy olvidando de enlazar algo.
=== PROYECTO A ===
foo.h
#include
__declspec(dllexport) void foo();
foo.cpp
#include “foo.h”
void foo()
{
std::cout << “Foo!\n”;
}
=== PROYECTO B ===
goo.h
#include
__declspec(dllexport) void goo();
goo.cpp
#include “goo.h”
void goo()
{
std::cout << “Goo!\n”;
}
=== PROYECTO C ===
// ¿Qué va aquí?
davy.ai
Para usar las funciones de A.lib y B.lib en C.dll, deberá seguir estos pasos:
En Project C, cree un archivo de encabezado que incluya las declaraciones de las funciones que desea utilizar de los Projects A y B. Por ejemplo, podría crear un archivo llamado helpers.h que se vea así:
“`c ++
#pragma once
__declspec(dllimport) void foo(); // importar foo() de A.lib
__declspec(dllimport) void goo(); // importar goo() de B.lib
Asegúrese de incluir el atributo
__declspec(dllexport)
al definir las funciones que desea exportar. Esto le dice al vinculador que estas funciones se exportarán desde C.dll.Configure la salida de compilación para Project C como una DLL. Puede hacerlo haciendo clic derecho en Project C en el Explorador de soluciones, seleccionando Propiedades y luego navegando a Propiedades de configuración -> General. Cambie el Tipo de configuración a Biblioteca dinámica (.dll).
Compile la solución. Esto debería generar C.dll, que se puede usar para llamar a las funciones de Projects A y B.