2017-12-18 7 views
0

私はlibgcc_s_sjlj-1.dllに依存するサードパーティライブラリを持っています。 自分のプログラムはMSYS2(mingw-w64)でコンパイルされており、libgcc_s_dw2-1.dllに依存しています。Windows上のコンパイラ+ libgccの異なるバージョンが発生しました

サードパーティのライブラリは純粋なバイナリ(ソースなし)です。また、libgcc_s_sjlj-1.dlllibgcc_s_dw2-1.dllは両方とも32ビットなので、アーキテクチャに関連する問題ではないと思います。

結果は明らかです。libgcc_s_dw2-1.dllに基づいてコンパイルされたプログラムは、libgcc_s_sjlj-1.dllに基づくサードパーティライブラリでは動作しません。私が得るのは、見つからないエントリポイント__gxx_personality_sj0です。

ツールチェインを第三者のlibgcc_s_sjlj-1.dllに合わせることは間違いありませんが、どのような努力が必要かわかりません。このsetjmp/longjmpバージョンを使用して、MSYS2の下でlibgcc dllのそのような亜種は見つかりませんでした。 MSYS2の下にあったすべてのバイナリがこのlibgcc_s_dw2-1.dllモジュールの上に置かれているので、私はツールチェーン全体をなくす必要があることを恐れています。

私の目標は簡単です:libgcc_s_dw2-1.dllの代わりにlibgcc_s_sjlj-1.dllの上に自分のコードがあるように解決策を探したいと思います。しかし、単に愚かな質問をしているのかどうかは分かりません。

答えて

1

用語dw2とsjljは、GCCがWindowsで使用できる2つの異なるタイプの例外処理を指します。詳細はわかりませんが、さまざまな種類のバイナリをリンクしようとはしません。 MSYS2はsjljツールチェーンを提供していないので、他の場所で見つけなければなりません。私はあなたがこのページに記載されて見つけることができる「MinGWの-W64-のビルド」プロジェクトから1をダウンロードをお勧めします:

https://mingw-w64.org/doku.php/download

あなたはBashシェルとしてMSYS2を使用することができますが、おそらくいずれにもリンクすることはできませんあなたのプログラムでそのライブラリのすべてのライブラリを自分で再コンパイルする必要があります(このクローズドソースのサードパーティライブラリを除く)。

関連する問題