Sto eseguendo il (terrificante) compito di compilare LLVM 3.3 su Windows e sono arrivato allo stage dove ho un carico di file LLVM*.lib
. Voglio collegarli insieme a una grande DLL condivisa, ma sto lottando (questa è la mia prima volta che collega cose su Windows). Ho provato:Collegamento di molti .libs per creare una DLL: simbolo esterno non risolto _DllMainCRTStartup
link /DLL /MACHINE:X64 /OUT:LLVM3.3.dll LLVM*.lib
ma senza alcun risultato. gli errori 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 suggerito di aggiungere l'interruttore /DEFAULTLIB:corelib
, così ho fatto che ancora una volta, ma ha problemi:
> 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'
Come posso fare questo?
EDIT: sono riuscito a risolvere il problema precedente, attuando un vuoto DllMain
e fare EmptyDllMain.obj
da esso:
#include <windows.h>
BOOL APIENTRY DllMain(HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
return TRUE;
}
e poi cercando:
link /DLL /OUT:LLVM3.3.dll LLVM*.lib EmptyDllMain.obj
ma la DLL che ottengo è solo 8kb - sembra che abbia perso molti megabyte di librerie LLVM! Come posso averli inclusi?
EDIT2: Ho risolto la compilazione LLVM il problema di Windows, date un'occhiata a questo document on github.
risposta eccellente, ma che cosa è la libreria per Visual C++ 6.0 e sotto * (corelibc ha un altro nome) *? – user2284570