2016-10-31 10 views
2

GCC 6(MinGW)で構築された静的ライブラリ(.lib)とリンクするWindows実行可能プロジェクトがあります。次のエラーがコンパイル時に発生しますGCCビルドスタティックライブラリとのリンク時にMSVCプロジェクトに「__popcountdi2」がありません

LNK2019 unresolved external symbol __popcountdi2 referenced in function ... 

シンボルのlibgccに存在する内蔵機能__builtin_popcount() GCCを使用した結果としてリンクされています。しかし、gccの引数として-static-libgccを追加しても、問題は引き続き発生します。

私のライブラリ(.lib)にlibgccの一部を格納する方法はありますか?libgccをリンクして実行可能ファイルとしてシステムにインストールする必要はありませんか? libgccでライブラリを発送する必要がありますか?

__builtin_popcount()は、私が現在使用している唯一の組み込み関数ではありません。ライブラリは__builtin_bswap32()を使用していますが、この問題は発生していません。

私はGCC 6.1.0を使用しています。 6.2.0にアップデート。同じ問題。

答えて

0

-march=nativeが渡されたとき、MinGW(GCC)が現在のCPUアーキテクチャを正しく検出していないという問題がありました。それはネイティブ命令(おそらくi686)としてPOPCNTをサポートしていないアーキテクチャに落ちていました。テストとして、-mpopcntがビルドに追加され、すべて正常に動作しました。

修正プログラムは-march=を使用して手動でアーキテクチャを指定することです。

さらに、ネイティブアーキテクチャが適切にポーリングされていないため、MingGWのバグですか?

関連する問題