Wykonuję (przerażające) zadanie polegające na budowaniu LLVM 3.3 na oknach i doszedłem do etapu, w którym mam ładunek plików LLVM*.lib
. Chcę połączyć je razem do jednej ogromnej wspólnej biblioteki DLL, ale mam problemy (to mój pierwszy raz łączenie rzeczy w oknach). Próbowałem:Łączenie partycji .libs w celu utworzenia biblioteki DLL: nierozwiązany symbol zewnętrzny _DllMainCRTStartup
link /DLL /MACHINE:X64 /OUT:LLVM3.3.dll LLVM*.lib
ale bezskutecznie. Błędy go z:
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
Internecie zasugerował dodanie przełącznika /DEFAULTLIB:corelib
, więc zrobiłem to, ale znowu ma problemy:
> 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'
jaki sposób mogę to zrobić?
EDIT: udało mi się rozwiązać powyższy problem, przez wdrożenie pusty DllMain
i dokonywania EmptyDllMain.obj
od niego:
#include <windows.h>
BOOL APIENTRY DllMain(HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
return TRUE;
}
a następnie próbuje:
link /DLL /OUT:LLVM3.3.dll LLVM*.lib EmptyDllMain.obj
ale biblioteka DLL, którą wydostaję, to zaledwie 8kb - wydaje się, że pominęło wiele megabajtów bibliotek LLVM! Jak mogę je włączyć?
EDIT2: I rozwiązać problemu na LLVM kompilację Windows przyjrzeć się tej document on github.
Doskonała odpowiedź, ale co to jest biblioteka dla Visual C++ 6.0 i poniżej * (corelibc ma inną nazwę) *? – user2284570