• 締切済み

*.exeと異なるフォルダのDLLをみにいく様に設定するには?

環境 Windows VISTA SP1 Visual Studio 2008 今現在、ビルドすると、releaseというフォルダにA.exeが 作成されます。そして、同一のプロジェクトにDLL生成プロジェクトを 追加してあり、同じreleaseというフォルダに B.dllが生成される様に設定してあります。 この状態で、A.exeをたたけば、B.dllを認識して立ち上がってくれます。 しかし、最近、dllを作るプロジェクトが大量になってしまい、 releaseフォルダが結構たくさんになってしまっています そこでA.exeをたたいたら release/dll というフォルダをみにいって起動してくれる様に改良 したいのですが どうしたらよいでしょうか? *exeを追記しているslnのプロパティを一通りみたのですが よくわかりません。

みんなの回答

  • kirinoma
  • ベストアンサー率53% (288/542)
回答No.1

Win32APIでSetDllDirectoryという関数が用意されています。 (WindowsXP SP1以降対象。Vistaで使用できるかは未確認です) http://msdn.microsoft.com/en-us/library/ms686203(VS.85).aspx http://social.msdn.microsoft.com/Forums/ja-JP/vsgeneralja/thread/f8200723-bb1c-46dd-adbf-5575733e8ca4/ 以上、参考になりましたら幸いです。

関連するQ&A

  • exeではなくdllを出力したい。

    VB2005環境です。 あるソリューション(仮にA)に、プロジェクトが2つ (C、Dとします)入っています。 どちらも新規追加しただけの状態で、空のフォームが あるだけです。 この状態でビルドをすると、Aフォルダの中にB、Cフォルダ、 それぞれB.exeと、C.exeが出力されています。 最終的には、このB、Cのプロジェクトは、別のソリューション(Z) に追加したいと考えています。 ソリューションZにあるプロジェクトにはメニュー用のフォームが あり、ボタンを押すと、C、Dのフォームがそれぞれ立ち上がる ようにしたいのです。 既にソリューションZにはプロジェクトがいくつか追加されていて、 ビルドをかけると、それらは○○.dllの形で出力されます。 C、Dも.DLLの形で出力させたいのですが、方法がわかりません。 やり方を教えていただけないでしょうか?

  • VC++6.0からVC++2010への移行

    マシンAの VC++6.0 から マシンBの VC++2010 へ移行し、Releaseモード でビルドした結果、正常動作しませんでした。 Releaseモード、Debugモード ではエラー、警告ともにありません。 ■ 6.0 と 2010 パラメータ ■ ・共有 DLL で MFC を使う ・マルチスレッド DLL ・警告レベル 3 ■マシンA環境■ ・Windows XP Professional 2002 Service Pack 2 ・.NET Framework 1.1 ・Visual Studio 6.0 Enterprise Edition ■マシンB環境■ ・Windows XP Professional 2002 Service Pack 3 ・.NET Framework 1.1 、2.0 、3.0 、3.5 、4.0 ・Visual Studio 2005 Professional Edition ・Visual Studio 2010 Professional Edition ・Visual C++ 2008 Redistributable 作業の経緯と致しましては、6.0 のプロジェクトを VS2008 でビルドし、 sln ファイルを生成しました。 その後、生成された sln ファイルをもとにVS2010でエラーと警告の解除作業をしました。 Debugモード で エラー、警告 がないことを確認し、Releaseモード でビルドした結果、現状に至っております。 マシンB環境で問題なく 6.0 プログラムが動作している(Debug、Releaseともに)ことから環境面に原因があると考えております。 どのような問題が考えられるのか、また、どのような調査を行うべきか、ご教示頂きたいです。 よろしくお願い致します。

  • visual studio 2015 exe 生成

    visual studio 2015のC++でWin32アプリケーションを作りました。 デバッグしようとしたところ、ビルドエラーが発生して、 「プログラム 'c:¥users¥documents¥visual studio 2015¥Projecst¥Win32project1¥Win32project1.exe'を開始できません。 指定されたファイルが見つかりません」と表示されます。 ソリューションのビルドは正常に出来ます。 そこでprojectのファイルを開いて見たのですが、確かにexeファイルが生成されていませんでした。 特に設定はいじってないです。 どうすればexeファイルが生成されるのでしょうか?

  • dll作成

    Visual studio2012利用し、 Win32プロジェクト から DLLを選んで、テンプレートに、関数を記入。ヘッダファイルを追加し、そこに関数の宣言を書いた。 ビルドすると、Debugフォルダに.dllは作成され、exeファイルが作成されない。 デバックなしで開始するとdllは開始できません。とメッセージがでます。 作成されたdllファイルの開始の仕方を、教えてください。

  • Microsoft Visual Studio 2008 Express Edtion でreleaseビルドにしてもexeができない

    Microsoft Visual Studio 2008 Express Edtionで http://d.hatena.ne.jp/tgk/20070413/1176438666 ここのサイトを参考に メニューの [ビルド]-[構成マネージャ]でreleaseフォルダに出力するように設定して、ソリューションの中に含まれる3つのプロジェクトも全てreleaseフォルダに出力するように設定したのですが、 ”ソリューションのビルド”実行後、releaseフォルダというのは作成されたのですが、この中にreleaseビルドされたexe実行ファイルが出力されてきませんでした。 なぜこのreleaseフォルダの中に何もできないのか原因を教えていただけませんでしょうか?

  • VS2010にて、依存関係とビルド順

    2つのプロジェクトを内包するソリューソンがあるとします。 片方はDLLで、「a.dll」とします。 もう片方はEXEで、「b.exe」とします。 EXEは「a.dll」を使用していて、「a.lib」をリンクしています。 (プロジェクトのリンカーの追加の依存ファイルに「a.lib」を記述) 依存関係も設定し、ビルド順はDLL,EXEの順になっています。 それで、DLL側のソースを更新し、ビルドを行いました。 結果、「a.lib」と「a.dll」が更新されました。 しかし、EXE側はビルドされませんでした。(更新不要で省略された) 「a.lib」をリンクしているので「a.lib」が更新されれば、 少なくともEXE側もリンク(ビルド)する必要があるはずです。 このような場合どのように設定すれば良いのでしょうか? ちなみに、それぞれを1つソリューソンに分け、 DLL側をビルド、EXE側をビルドとした場合は、 EXE側はリンク(ビルド)されました。 また、Visual Studio 2008以前はこのような事はありませんでした。 Visual Studio 2010になって、この辺りの処理が変わったのでしょうか?

  • VB6.0(SP6)にて開発を行なっています。参照設定に関して教えてく

    VB6.0(SP6)にて開発を行なっています。参照設定に関して教えてください。 ソースコードはVSS(VisualSourceSafe)にて管理しています。 3つのフォルダにそれぞれVB6.0のプロジェクトがあります。 C:. +---フォルダ1 | ProjectA.dll ←このdllはVSS管理されていない。 | ProjectA.vbp | +---フォルダ2 | ProjectB.dll ←このdllはVSS管理されていない | ProjectB.vbp | \---フォルダ3 ProjectC.exe ←このexeはVSS管理されていない ProjectC.vbp 上図にはdllファイルもexeファイルも記載してありますが、dllファイルとexeファイルはVSSでは管理(登録)しておりません。各開発担当者はVSSから最新のソースコードを取得して、各自のローカル環境でビルドを行なってdllやexeを生成します。 ProjectA.vbpはProjectA.dllを生成します。 ProjectB.vbpはProjectB.dllを生成します。 ProjectC.vbpはProjectC.exeを生成します。 ここでProjectC.vbpはProjectA.dllとProjectB.dllを参照しています。 ここからが質問なのですが、A君の環境でProjectA.dllとProjectB.dllを生成したあとProjectC.vbpをビルドすると問題なくProjectC.exeが生成できます。ところが、B君の環境で同じことをやろうとすると、ProjectA.dllとProjectB.dllを生成まで問題なくできるもののProjectC.vbpをビルドしてProjectC.exeを生成する際に、ProjectA.dllとProjectB.dllが参照エラーとなってしまいます。参照設定をし直せばB君の環境でもProjectC.vbpをビルドしてProjectC.exeを生成できるようになります。ところが、参照設定し直したProjectC.vbpをVSSにチェックインして、A君の環境で最新ソースを取得してProjectC.vbpをビルドしようとすると今度はA君の環境でProjectA.dllとProjectB.dllが参照エラーとなってしまいます。 各開発担当者のローカル環境で参照設定をしなおさずに済むようなプロジェクトの設定方法がありましたら教えていただけないでしょうか。よろしくお願いします。 (なお、変更したのはProjectCの参照設定のみであり、ProjectAとProjectBには一切変更箇所はありません。)

  • VS2010での依存関係

    Visual Studio 2010にて、依存関係に関する質問です。 2つのプロジェクトを内包するソリューソンがあるとします。 片方はDLLで、「a.dll」とします。 もう片方はEXEで、「b.exe」とします。 この時、DLL側のソースを更新し、ビルドを行った場合 EXE側もビルドされるように設定したいのですが、 この場合どのように設定すれば良いのでしょうか? 「依存関係」の項目などは設定しています。

  • VC++6 EXEをDLLに変換

    VC++6の「Win32 Aplication」で作成したプロジェクトがあります。 ビルドするとEXEができますが、これをDLLにするには どうすればよいですか。 よろしくお願いします。

  • VistaでビルドしたexeがXPで動作しない。

    Visual Studio 2003 (OS:XP)で開発していたプロジェクトを、Visual Studio 2005(OS:Vista)に移行しているのですが、VistaでビルドしたexeをXPへインストールすると下記のエラーが表示され動作しません。 【表示されるエラー】 「プロシージャ エントリ ポイント _except_handler4_common が ダイナミック リンク ライブラリ msvcrt.dllから見つかりませんでした」 MFCのダイアログベースで、インストールはセットアッププロジェクトで作成したインストーラーを使用しています。 VistaでビルドしたexeをXPで動作させるには、どのようにしたら良いのでしょうか? 以上、よろしくお願いします。

専門家に質問してみよう