7

LLVM*.libWindows で LLVM 3.3 をビルドするという (恐ろしい) タスクを実行していて、大量のファイルがある段階に到達しました。それらを 1 つの巨大な共有 DLL にリンクしたいのですが、苦労しています (Windows でリンクするのはこれが初めてです)。私はもう試した:

link /DLL /MACHINE:X64 /OUT:LLVM3.3.dll LLVM*.lib

しかし、役に立たない。次のエラーが発生します。

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

インターネットは/DEFAULTLIB:corelibスイッチを追加することを提案したので、私はそれを行いましたが、やはり問題があります:

> 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'

どうすればいいですか?


編集:DllMainを実装してから作成することにより、上記の問題を修正できましEmptyDllMain.objた:

#include <windows.h>

BOOL APIENTRY DllMain( HANDLE hModule, 
                   DWORD  ul_reason_for_call, 
                   LPVOID lpReserved
                 )
{
    return TRUE;
}

そして試してみます:

link /DLL /OUT:LLVM3.3.dll LLVM*.lib EmptyDllMain.obj

しかし、私が取得したDLLはわずか8kbです.LLVMライブラリの何メガバイトも見逃しているようです! それらを含めるにはどうすればよいですか?


EDIT2: Windows での LLVM コンパイルの問題を解決しました。github のこのドキュメントをご覧ください。

4

3 に答える 3