11

CLangソースをダウンロードし、CMakeを使用してVisual C ++ 10 IDEワークスペースを作成し、Visual C ++ 10.0(エクスプレス)からすべてをビルドしました。

今、私はhelloworldでたくさんのリンカーエラーを受け取ります:

d:\ dev\test>タイプcon>foo.cpp
#include <iostream>
名前空間stdを使用します。
int main(){cout << "こんにちは、しがみつく世界!" << endl; }
^ Z

d:\ dev \ test> clang ++ foo.cpp
foo-839435.o:エラーLNK2019:関数_mainで参照されている未解決の外部シンボル__ZSt4cout
foo-839435.o:エラーLNK2019:関数__ZNSt14error_categoryD0Evで参照されている未解決の外部シンボル__ZdlPv
foo-839435.o:エラーLNK2019:関数__ZNSo6sentryで参照されている未解決の外部シンボル__ZSt18uncaught_exceptionv
D2Ev
foo-839435.o:エラーLNK2019:関数__ZNSt8ios_base5clearEibで参照されている未解決の外部シンボル___cxa_rethrow
foo-839435.o:エラーLNK2019:関数__ZNSt8ios_base5clearEibで参照されている未解決の外部シンボル___cxa_allocate_exception
foo-839435.o:エラーLNK2019:関数__ZNSt8ios_base5clearEibで参照されている未解決の外部シンボル___cxa_throw
foo-839435.o:エラーLNK2019:関数__ZSt15make_erで参照されている未解決の外部シンボル__ZSt17iostream_categoryv

それで私はそれについて何ができますか?

4

5 に答える 5

4

WindowsでClangを試してみたい場合は、ここで提供するようなMinGWビルドバージョンを使用することをお勧めします(または、お気に入りのMinGWツールチェーンを使用して自分でビルドします)。

gccとパッケージ(linux / mac / cygwinサフィックスがないもの)の両方が必要になり、clangそれらを同じディレクトリに抽出します。Clangはgccを使用してリンクし、GCCのlibstdc ++にリンクできるため、C++標準ライブラリにほとんどアクセスできます。例外は32ビットバージョンで機能します。しかし、デバッグ情報はうまくいきませんでした。

より良いMSサポートをClangにもたらすための作業が行われていますが、それはゆっくりと進行しているタスクです。

于 2011-11-19T15:40:52.203 に答える
2

ここに誤解があると思います。

Clang は (ゆっくりと) MFC ヘッダーを解析する方法を教えられています。私が知る限り、フランソワ・ピシェはこのプロジェクトにほぼ一人で参加していますが、ヘッダー ロット全体にわずかなエラーしかなく (!)、明らかに VC++ 解析に同梱されている標準ライブラリはかなり前に完成しています。

ただし、これはAST生成に関するものであり、コード生成に関するものではありません。Clang は現在、VC++ ライブラリとやり取りするためのコードを適切に生成できません。名前のマングリングが不完全であるだけでなく、ABI はまだ形成されており (適切なパディング/アライメントを取得するために、過去 2 か月間に多数のパッチが適用されています)、例外を伴う長年の問題があります。

Windows で Clang を使用する場合は、MinGW または MinGW64 を使用する必要があります。 ruben の回答を参照してください。

于 2011-11-19T15:46:35.390 に答える
1

MinGW gcc とは異なり、clang には glibc ライブラリが含まれていないため、デフォルトでは標準ライブラリなどはありません。Visual C++標準ライブラリを使用する方法はわかりませんが、投稿した内容から明らかなように、デフォルトではgccのようなシンボルが生成されるため、glibcまたはnewlibで使用する必要があります...

そして-Ldirectory、.lib ファイル (または glibc の場合は .a) へのライブラリ パスを指定するか、それらをデフォルトの clang 検索パスの 1 つに配置します (実行:clang -v -x c++ -fsyntax-only some fileそれらを表示します)。

于 2011-11-19T14:46:07.243 に答える
1

clang++ を使用して .cpp をコンパイルし、MS リンクの代わりに ld リンカーを試します。私のために働きます。

于 2013-03-04T12:42:11.220 に答える
0

Clang/LLVMによるWindowsのサポートはまだ完全ではありません。このオプションを含めるようにしてください:-Xclang -cxx-abi -Xclang microsoft。しかし、それが正しく機能するかどうかはわかりません。

于 2011-11-19T13:35:29.267 に答える