Para el fondo, me he encontrado con esta portación de un código de base de Linux de tamaño mediano (compilando en un .so gigante) a x64 windows (compilando en .dll). He tenido problemas con los conectores.Errores de símbolos no resueltos dentro de DLL
Como caso de prueba mínima, si se crea un proyecto de Visual Studio desde justo el siguiente archivo:
#include <Windows.h>
#include <Dbghelp.h>
void do_stuff(char const * s)
{
char buffer[4096];
long int len = UnDecorateSymbolName(
s,
buffer,
sizeof(buffer),
UNDNAME_COMPLETE);
}
Y puse el tipo de proyecto de DLL y lo construye, me sale un error "LNK2001: sin resolver externo símbolo __imp_UnDecorateSymbolName ". Es decir, el archivo se compila correctamente, pero no se puede vincular a un dll.
Creo que el objetivo es que mi dll se vincule con dbghelp.dll, especialmente porque (al menos en mi sistema) no existe ningún archivo como dbghelp.lib. Entonces, ¿por qué está tratando de resolver ese símbolo ahora, en lugar de cuando mi DLL se carga en una aplicación? ¿Y por qué no puede ver esa función de todos modos?
Para ser claros, he confirmado que estoy compilando la DLL x64, y que dbghelp.dll en C: \ Windows \ System32 es x64.
Todavía necesita para enlazar con la dbghelp.lib biblioteca de importación; esto debe incluirse con Visual Studio, Platform SDK, etc. – Luke