2016-03-29 26 views
1

OpenGL、GLFW、C/C++を使用してゲームを作成しました。私はSOILやirrKlangのようなサードパーティ製のライブラリを使用しています。私はMicrosoft Visual 2015を使用しています。デバッグとリリースの両方のバージョンは、Visual Studioから正常に実行されます。プロパティ - > C++ - >コード生成 - >ランタイムライブラリで/ MDdを選択しました。私は他の設定を試みましたが、リリース版は他の設定とはうまく動作しませんでした。すべての.dllファイルは、リリースおよびデバッグフォルダに保存されます。 しかし、自分のリリースのフォルダに移動してそこにある.exeをコピーして貼り付けると、デスクトップにもはや実行されません。 irrKlang.dllが見つからないというメッセージが表示され続けます。誰かが私のゲームのスタンドアロンの.exeを稼働させる方法を説明してもらえますか?デスクトップから実行できるVisual Studio 2015で.exeを作成する方法

+0

「他のどのデバイスとも動作しませんか? PC? – Cameron

+0

通常は、すべての依存関係をインストールするインストーラを作成するか、ドライブにそれらがあることを確認したインストーラを作成しています。多くのDLLが存在する可能性があるため、すべての依存DLLをexeファイルに入れてください。 – cerkiewny

答えて

3

ここに2つのものがあります。最初に、.exeはアプリケーションのエントリポイントを含む実行可能ファイルです。これは本当にあなたが必要とする最初の作品です。しかし、アプリケーションは静的にリンクされていないコードに依存することができますが、動的にリンクされるコードは実行時にのみロードされます。これらのコードの実行時ライブラリは、DLL(「動的リンクライブラリ」)と呼ばれます。

アプリケーションがDLLに依存している場合、実行中はlook for that DLLになります。見つからない場合は、見つからないDLLに関するメッセージボックスが表示されます。したがって、.exeファイルだけでなく、それが依存するすべての.dll(およびそれに依存する)もコピーする必要があります。アプリケーションが多くのデフォルトのシステムDLLとリンクすることに注意してください。 kernel32が含まれていますが、これらはシステム検索パスに常に存在するため、.exeの横にコピーする必要はありません。

今、2番目の部分です。 Visual StudioがインストールされていないPCでアプリケーションを実行する場合は、VS2015ツールチェーンが自動的にインストールされたC/C++ランタイムをコンピュータにインストールする必要があります。これらは手作業でコピーするDLLではありません。むしろ、redistributable installerがあり、すべてのアプリケーション用にPCにそれらをグローバルにインストールします。あなた自身のインストーラでこれを出荷することができます。

リリースでは、/MD(デバッグ用のCRTはデバッグ専用で、Visual Studioがインストールされている場合にのみインストールされます。これはPCの外で実行することを目的としていません)とリンクしたいと考えています。

+0

また、それらをシステムにインストールして、頻繁に使用されるパッケージ(追加する価値があると思われる)がある場合はシステムディレクトリを調べることもできます。 – cerkiewny

+0

ありがとうございます。デスクトップにフォルダを作成して貼り付けました。そのフォルダにexeを入れ、.dllも同じフォルダに貼り付けました。私はそれを実行すると、アプリケーションはもはや不足しているDLLについて不平を言うことはありません。その部分が解決されました!代わりに、私は今、別のバグに遭遇しますが、別の質問があります..... – LegItJoe

0

この文:。

「両方のデバッグとVisual StudioからOKバージョンの実行をリリースプロパティで - > C++ - >コードGeneration->ランタイムライブラリのI/MDDを選択した私は、他の設定が、リリースを試してみました。バージョンは他のバージョンとはうまく動作しません。

私には、おそらく、サードパーティのライブラリの1つのリリースバージョンがないと信じられます。

/MDdはアプリケーションにMSランタイムのデバッグバージョンを使用させます。つまり、プロジェクト内の何かがデバッグバージョンでビルドされています。

私は実行ファイルとDLLの依存関係を見るために 'depends.exe'アプリケーションを使用します。以前はマイクロソフトから直接提供されていましたが、現在は第三者経由でサポートされているようです。古いSDKにはそれがあります。

http://www.dependencywalker.com/

関連する問題