3

チュートリアルがあります - http://llvm.org/docs/GettingStartedVS.html例は純粋な C で行われました。コンパイルしてリンクできます。問題なく、本当に。しかし、純粋な C ではなく、C++ が必要です。ここから困難が始まります。

clang ++の場合、次のような文字列を使用します

"C:\..> clang++ -c hello.cpp -emit-llvm -o hello.bc"

それから:

"C:\..> llc -filetype=obj hello.bc"

"C:\..> link hello.obj -defaultlib:libcmt -out:hello.exe"

そこに14個のエラーが発生しますLNK2001: unresolved external symbol

だから、私はいくつかのヒントが必要です。私は何を間違っていますか?

//-----------------

こんにちは.cpp:

#include < iostream >

int main()

{

    std::cout << "TEST\n" << std::endl;

    return 0;

}

//-----------------

OS: Windows7.

UPD: 主な質問: .bc から .exe を取得する方法は? (LLVM、Windows7)

4

1 に答える 1

2

私のGCCおよびClangパッケージを使用できます。

それらを同じディレクトリにダウンロードして展開します。Clang は GCC 4.6.3 の libstdc++ と MinGW-w64 の CRT を使用します。gcc と同じように呼び出します。

Clang/LLVM は現在、ABI の問題により、MSVC の C++ ライブラリで動作しません。GCC の libstdc++ は非常にうまく機能しますが、意外な場所 ( std::to_string<regex>、 など<thread>) に穴があります。

Clang の Windows サポートは問題ありませんが、完全にはほど遠いです。残念ながら、たとえば C++ クラス全体を dllexport することはできません。また、Win64 コード生成も、C++ インストールを機能させるには十分ではありません (32 ビットのように GCC と組み合わせても)。

于 2012-09-28T17:25:51.693 に答える