回答:
これは、Microsoft Visual Studioのセットアップではなく、MinGW / gccコンパイラの問題だと思います。
libgcc_s_dw2-1.dll
コンパイラのbinディレクトリにある必要があります。このディレクトリをランタイムリンク用のPATH環境変数に追加するか、コンパイラフラグに「-static-libgcc -static-libstdc ++」を追加することで問題を回避できます。
実行可能ファイルを配布する場合は、おそらく後者が最も理にかなっています。自分のマシンでのみ実行する場合は、PATH環境変数の変更が魅力的なオプションです(実行可能ファイルのサイズを抑えます)。
更新しました:
Greg Treleaven(以下のコメントを参照)からのフィードバックに基づいて、次のリンクを追加します。
[Code :: Blocks「プロジェクトビルドオプション」のスクリーンショット]
後者の説明には-static-libgcc
、-static-libstdc++
リンカーオプションが含まれます。
Eclipseでは、プロジェクトのプロパティ> C / C ++ビルド>設定> MinGW C ++リンカー>その他の下にあります。
上部の「リンカーフラグ」に追加する必要があります。他にはない。次に、再構築します。
それらを静的にリンクすると、最適化を行っても最大1,400kbのサイズが爆発することがわかりました。共有DLLをコピーするだけの場合と比較して277kb大きくなります。すべてUPXした後も388kb大きくなります。ここで非常に失う/失う。エンドユーザーがDLLを他の場所にインストールしている場合は削除するかどうかを決定できるため、DLLを含めるだけです。
PCでそのDLLを見つけ、実行可能ファイルと同じディレクトリにコピーします。
もご覧ください。それは私の問題を解決しました。
ちなみに間違いなくcompiler
フラグなのでしょうか?多分linker
ここでより適切な用語ですか?
MinGW http sourceforge.netツリーに移動します。Home / MinGW / Base / gcc / Version4(または使用しているバージョン)/ gcc-4(version)/の下に、gcc-core-4.8.1-4-mingw32-dll.tar.lzmaのようなファイルがあります。それを抽出して、libgcc_s_dw2-1.dllと他のdllがあるbinフォルダーに移動します。必要なものをコピーして、binディレクトリに貼り付けます。
あなたがそれをsystem32または他のdllファイルで行うようなものに入れて、実行しようとするすべてのプログラムがあなたのマシンでその問題を抱えることがないようにすることはできませんか?
私はそれを置くためのパスが必要です。
ビルドしたばかりのプログラムを実行するたびにディレクトリに配置するのはちょっと面倒です...
編集:私は解決策を見つけました:
libgcc_s_dw2-1.dllをコンピューター上の場所に抽出します。libgcc_s_dw2-1.dllを要求しているプログラムのディレクトリに解凍することをお勧めします。
それが機能しない場合は、libgcc_s_dw2-1.dllをシステムディレクトリに抽出する必要があります。デフォルトでは、これは次のとおりです。
- C:\ Windows \ System(Windows 95/98 / Me)
- C:\ WINNT \ System32(Windows NT / 2000)
- C:\ Windows \ System32(Windows XP、Vista、7)
64ビットバージョンのWindowsを使用している場合は、libgcc_s_dw2-1.dllをC:\ Windows \ SysWOW64 \にも配置する必要があります。
既存のファイルを必ず上書きしてください(ただし、元のファイルのバックアップコピーを作成してください)。コンピュータを再起動します。
それでも問題が発生する場合は、以下を試してください。
- Windowsの[スタート]メニューを開き、[実行...]を選択します。
- CMDと入力してEnterキーを押します(または、Windows MEを使用している場合はCOMMANDと入力します)。
- regsvr32 libgcc_s_dw2-1.dllと入力し、Enterキーを押します。
設定>>コンパイラとデバッガに移動し、[リンカ設定]タブをクリックして、[その他のリンカオプション]編集コントロールに移動して貼り付けます。「-static-libgcc -static-libstdc ++」にコンパイラフラグオプションはありません。 Code :: Blocksのコンパイラフラグオプションで、これがその問題を解決する方法です。私はここにも解決策を探しに来ました。残りの部分を誤って考え出したのですが、うまくいきました。ファイルは外部のCode :: Blocksからクリック可能になり、デスクトップから直接機能します。
そのdllへのパスをPATH環境変数に追加します。
他のリンカーオプションに「-static」を追加すると、この問題が解決します。別のシステムでこれをテストした後、私は同じ問題を抱えていましたが、私自身ではそうではなかったので、開発システムでこれに気付かなかった場合でも、静的にリンクしている場合は、このセットがあることを確認する必要があります。
DLLを実行可能ファイルと同じフォルダーにコピーすることは、静的にリンクするという考えに反するため、解決策ではありません。
別のオプションは、この問題を解決するMinGWのTDMバージョンを使用することです。
編集を更新:これはすべての人の問題を解決するわけではありません。私が最近これについて発見したもう1つの理由は、他の誰かがコンパイルしたライブラリを使用する場合です。私の場合、それは不適切にコンパイルされたSFMLであり、MinGWの異なるバージョンでコンパイルされたため、存在しないDLLが必要でした。使用する。私はドワーフビルドを使用しましたが、これは別のビルドを使用したので、DLLがどこにもありませんでした。もちろん、静的ビルドだったので、DLLは必要ありませんでした。解決策は、ライブラリの別のビルドを見つけるか、自分でビルドすることです。
共有ライブラリをどこでダウンロードできるか疑問に思っている場合(これはdllを含めない限り、クライアントのデバイスでは機能しません)、リンクは次のとおりです:https : //de.osdn.net/projects/mingw/downloads/72215/ libgcc-9.2.0-1-mingw32-dll-1.tar.xz /