moneda - dll-files.com client
Vincular lotes de.libs para crear un archivo DLL: símbolo externo sin resolver_DllMainCRTStartup (3)
Estoy realizando la (aterradora) tarea de construir LLVM 3.3 en Windows y he llegado al punto en el que tengo una carga de archivos LLVM*.lib
. Quiero vincularlos a una gran DLL compartida pero estoy luchando (esta es la primera vez que enlace cosas en Windows). He intentado:
link /DLL /MACHINE:X64 /OUT:LLVM3.3.dll LLVM*.lib
pero fue en vano. Tiene errores con:
LINK : warning LNK4001: no object files specified; libraries used
LINK : error LNK2001: unresolved external symbol _DllMainCRTStartup
LLVM3.3.dll : fatal error LNK1120: 1 unresolved externals
Internet sugirió agregar el /DEFAULTLIB:corelib
, así que lo hice, pero nuevamente tiene problemas:
> link /DLL /MACHINE:X64 /DEFAULTLIB:corelibc /OUT:LLVM3.3.dll LLVM*.lib
LINK : warning LNK4001: no object files specified; libraries used
LINK : fatal error LNK1104: cannot open file ''corelibc.lib''
¿Cómo hago esto?
EDITAR: DllMain
solucionar el problema anterior, implementando un DllMain
vacío y haciendo un EmptyDllMain.obj
partir de él:
#include <windows.h>
BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
return TRUE;
}
y luego intentando:
link /DLL /OUT:LLVM3.3.dll LLVM*.lib EmptyDllMain.obj
pero el archivo DLL que obtengo es de solo 8kb, ¡parece haber perdido muchos megabytes de bibliotecas de LLVM! ¿Cómo los incluyo?
EDIT2: resolví la compilación de LLVM en el problema de Windows, eche un vistazo a este documento en github .
Si ingresó manualmente el _DllMainCRTStartup
, asegúrese de deletrearlo (watch case) correctamente. Tuve _DLLMainCRTStartup
y _DLLMainCRTStartup
un tiempo para ver por qué todavía recibí el error del enlazador. Para Windows CE, el enlace requerido lib es corelibc.lib
.
Tuve esto una vez al vincular una lib con una plataforma incorrecta configurada (X86 a X64). Asegúrese de que todas las LLVM * .lib estén compiladas y vinculadas con la cadena de herramientas correcta:
[...]/Microsoft visual Studio 10.0/VC/bin/amd64/ cl.exe and link.exe
que obtienes llamando
"%PROGRAMFILES(X86)%/Microsoft Visual Studio 10.0/VC/vcvarsall.bat" amd64
También tuve problemas similares al mezclar MT y MD CRT, te recomiendo que te apegues a
/MD (or /MDd for debug)
al compilar los objetos para cualquiera de los LLVM * .lib (y cualquier otro objeto de otras bibliotecas externas que enlaza con estos).
[editar]
¡Y echar a ese feo EmptyDllMain.obj!
[/editar]
eliminar archivos lib de "ignorar bibliotecas predeterminadas específicas" de "Vinculador-> Entrada" en las propiedades del proyecto