2011-06-19 14 views
32

私はプロジェクト(具体的なゲーム)に取り組んできました。私は別のライブラリからやり直すべきだと感じています。だから、これを行うときに私はCode::Blocksを再インストールし、私の新しいライブラリを組み込みました。libstdC++ - 6.dllが見つかりません

今のところ私は問題が発生していますが、私の新しいプロジェクトでは、すべてのインクルードが動作しているかどうかをテストしています。この問題は次のとおりです:libstdc++-6.dll was not found.最初に私はこのファイルをオンラインで見つけることができたのかどうか疑問に思ったが、どこにも見つからない場所(または少なくとも私が検索した場所...)すぐに、私は古いプロジェクトを読み込もうとした。同じ問題が再び起こった(wierd ... ._)私はおそらく私のコンパイラを考えていたので、私は古いコンパイラを使用し、同じことをしました!この瞬間、私は明日のために問題をオフにしました(今日です)

私の質問です:他の誰かがこの問題を抱えていたら、どうしたら解決できますか?

私はWindows Vista 32ビット版のMinGWをコンパイラとして使用してCode :: Blockを使用しています。

***** ***** EDIT

ここに私のプロジェクトでビルドオプションがあります。これらのプロジェクトの設定ではなく、グローバルなコンパイラであることに注意してください:(プロジェクト名)で

- >コンパイラの設定 - > Otehrオプション:

(私はコマンドを区切るために//を使用)

-mthreads// 
-fmessage-length=0// 
-fexceptions// 
-fident// 

で(プロジェクト名) - >コンパイラの設定 - >#定義します(プロジェクト名)で

WIN32// 
_WINDOWS// 

- >リンカ設定 - >その他のリンカオプションを:

私は .a拡張子を持つファイルへのさまざまなリンクを持っているリンカー>リンクライブラリで
-static-libstdc++// 
-static-libgcc// 
-Wl,--enable-auto-image-base// 
-Wl,--add-stdcall-alias// 
-Wl,--enable-auto-import// 

、これらのファイルは、私はMinGWの/ binにリンクを持つ弾丸物理学、Ogre3D、および検索ディレクトリでSFML

が含まれ、 MinGW/libディレクトリ、および別のライブラリへの他のリンクがあります。

マイコンパイラはMinGW、Windows 32ビット用のGNU GCCコンパイラです。 IDEはCodeblocksです。また、プロジェクトのデバッグとリリースの設定には何もありません。

ほとんどの設定は、私がOgre3D Application setup tutorialから入手したものです。

+0

ちょっと、私はOgre3Dの設定を削除しました。プログラムはエラーなしで動作しています。私が使用したコマンドで何かを考えていると、dllエラーが発生しています。 – Molmasepic

+0

もう一度、私はちょうど1つずつファイルを読み込み始めました。そして、私はラッパー[btOgre](http://www.ogre3d.org/forums/viewtopic.php?f=5&t=46856)が原因であることを知りましたこのdllエラーの私の問題は、これが鬼とのBullet Physicsを使うのに必要であるということです。私はこれを正しく使う方法を見つけようとします。 – Molmasepic

+0

ちょっと、私はbt0greの代わりにOgreBulletを使うことに決めました。私はcodeBlocksで自分自身を構築し、それは完全に行った。サポートに感謝し、すべての不要なトラブルを残念に思っています。 :) – Molmasepic

答えて

65

WindowsでMingWを使用してC++コードをコンパイルする場合は、オプションの-static-libgcc-static-libstdc++を追加して、CおよびC++標準ライブラリを静的にリンクすることができます。ライブラリのバージョン管理はWindowsの苦痛なので、このアプローチはWindowsバイナリを作成するための最も迅速かつクリーンなソリューションです。

+4

ちょっと試してみたところ、これはうまくいきませんでした。 .. – Molmasepic

+0

@Molmasepic:エラーや問題点は何ですか? –

+0

「libstdC++ - 6 not found」という質問に同じ問題があります...それらをリンカオプションに追加しますか?コンパイラの設定にlibsかプロジェクトの設定がありますか? – Molmasepic

6

私が知る限り、これはC++ランタイムライブラリです。したがって、プログラムを作成するコンパイラに依存します(新しいバージョンにはC++ 0xのものがいくつか含まれていますが、古いバージョンはおそらくそうではありません。コンパイラとそのバージョンによって異なります)。

MinGWを使用する場合は、このコンパイラのフォルダにあるlibstdC++ - 6.dllを使用する必要があります。 MinGW/binフォルダは、コンピュータ上で検索する場所です。

このファイルを実行可能ファイルと同じディレクトリにコピーする場合は、OKである必要があります。

+0

ええ、問題は私がそこにいることです。私の古いプロジェクトでは、コンパイラを古いものに戻した後、うまくいきました。しかし、もし私が同じコンパイラの下で新しいプロジェクトを作るのであれば、私はそのエラーを受け取ります...これは本当にそれが前にファイルを必要としなかった方法を意味するが、今それは...また、コンパイラのバージョン(古いものと新しいもの)がまったく同じものであることが分かった。 – Molmasepic

4

mingwディレクトリからlibstdC++ - 6.dll.a \ libstdC++。dll.aを削除するだけでこれが解決されます。

-static-libstdC++フラグを使用してみましたが、これは私のためには機能しませんでした。私はクロスコンパイラためMinGWのではFedora 20の下でEclipseを使用http://ghc.haskell.org/trac/ghc/ticket/4468#

0

: 私に解決策を見つけました。 これらの設定を使用すると、プログラムはlibstdC++ - 6.dllをもう要求しません。

プロジェクトタイプ - クロスGCC

クロスセッティング

  • プレフィックス:x86_64版-W64-mingw32-
  • パス:は/ usr/binに

クロスGCCコンパイラ

  • コマンド:gccの

  • すべてのオプション: -Iは/ usr/x86_64の-W64-MINGW32/SYS-ルート/ mingwの/含ま-O3 -Wall -c -fmessage長= 0

  • 含まれています。/ usr/x86_64の-W64-MINGW32/SYS-ルート/ mingwの/は

クロスG ++コンパイラ

が含まれます
  • コマンド:G ++

  • すべてのオプション:-Iは/ usr/x86_64の-W64-MINGW32/SYS-ルート/ mingwの/は-03 -Wall -c -fmessage長= 0

  • が含まれます
  • が含まれています。/ usr/x86_64の-W64-MINGW32/SYS-ルート/ mingwの/含ま

クロスG ++リンカ

  • コマンド:G ++ -static-のlibstdC++ -static-libgccの

  • すべてのオプション:-Lは/ usr/x86_64の-W64-MINGW32/SYS-ルート/ mingwの/ libに-Lは/ usr/x86_64の-w64- MINGW32/SYS-ルート/ mingwの/ binに

  • ライブラリ検索パス(-L):

    は/ usr/x86_64の-W64-MINGW32/SYS-ルート/ mingwの/ libに

    は/ usr/x86_64版-w64-mingw32/sys-root/mingw/bin

+1

なぜそれがうまく動作するか説明した方が良い答えです。 –

+0

さらに詳しく説明してください。なぜそれがあなたのために働いたのですか? –

2
私は、次のオプションではgccを使用してのMinGWでコンパイルしたときに、このエラーも発生し

-lstdc++ -lmではなく、G ++

私は、これらのオプションに気付かなかった、コメントを追加しました:私はまだエラーを得た-static-libgcc -static-libstdc++

最後にgccを使用していて、コンパイラをg ++に変更して-stdc++ and -lmを削除し、すべてがうまくリンクされていることがわかりました。

(LINK.cppではなくLINK.cを使用していましたが... make -pn | lessを使用してください。)

以前の著者がgccを-stdC++で使用していた理由はわかりません。私はstdC++と自動的にリンクするg ++を使用しない理由は見当たりません...そして私が知る限り、他の利点を提供します(結局、C++コンパイラです)。

0

私はlibstdC++ - 6.dllファイルをexeファイルが生成されたのと同じフォルダに置いていました。

関連する問題