DLLと呼出しプログラムを同時にインストールする方法

このQ&Aのポイント
  • DLLとCallDLLを同時にインストールする方法について教えてください。
  • DLLとCallDLLは別ソリューションにありますが、一度にインストールする方法を教えてください。
  • DLL.dllを含めて一度にインストールする方法を教えてください。
回答を見る
  • ベストアンサー

DLLと呼出しプログラムを同時にインストールする?

DLLとそのDLLを呼ぶCallDLLという親プログラムを作りました なおDLLとCallDLLは別ソリューションにありますので、Dll.dllをCallDLL.exeがあるディレクトリにコピーしてデバックしました(明示的リンクですのでDLL.libはありません) デバック完了したのでReleaseでリビルドしたCallDLL.exeを作り、同じくReleaseでリビルドしたDLL.dllを同じ所にコピーしました すなわちc:\ユーザ\~~\Projects¥CallDLL¥Releaseに DLL.dll、 CallDLL.exe、 CallDLL.pdb(これ何だか分かりません?)が入りました この状態でセットアッププロジェクトを作り、リビルドしたらSetup.exeとCallDLL.msiが出来ました このSetup.exeを起動してインストールするとProgramFilesにはCallDLL.exeしか入っていません DLL.dllがインストールされていないのです どのようにしたらDLL.dllを含めて一度にインストール出来るようになりますか? 色々と検索したりマニアルを読みましたが分かりません 教えてください、お願いします

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

DLL.dllプロジェクトのプライマリ出力をセットアップの出力に含めてください。 必要なファイルはちゃんと指定する必要があります。 ちなみに,.pdbはデバッグ用のデータベースですので,実行には不要です。

sato-may
質問者

お礼

ありがとうございます ご指導頂いた方法でトライしましたら一発OKでした 今後とも宜しくお願い申し上げます ありがとうございました

関連するQ&A

  • VC++でDLLを作っていますがぁ~???

    1ソリューション1プロジェクト主義です ⇒ 実はゴチャゴチャになってしまうのが怖いだけです ですからDLLを作る際にもDLL自体とDLL呼出し元を別のソリューションで作り、呼出し元のリンカーの入力の『追加の依存ファイル』でDLL.libを指定しています そうするとリビルドで『DLL.dllが無いぞ!』とのエラーが出ます 仕方がないのでDLLソリューションから呼出し元EXEのディレクトリィにDLL.dllをコピーするとOKになります 質問 DLLソリューションからDLL.dllをコピーしなくとも良い方法はありますか? 出来ましたら以下の愚問にもお答え頂ければ幸いです 愚問(1) DLL.dllとは何者ですか? 私にはDLL.libが必要なのですがぁ~ 愚問(2) DLLを作成する事例の各種のサンプルでは同じソリューションにDLLと呼出し元を入れて、出来上がったDLL.libのパスを呼出し元プログラムのプロジェクトの追加の依存ファイルに書込んでいます サンプルのように同じソリューションに入れるメリットは何ですか? 愚問(3) DLLの文字セットには『設定なし』を指定しています。呼出し元の文字セットはマルチバイトです。なぜ整合性が取れるのでしょうか? 宜しくお願い申し上げます

  • .dll .lib を作成するホルダーの指定法は?

    .NETで同一ソリューションの中に、C#でメインプログラム、C++でDLLプログラムを作りました メインの .exeは Projects ⇒ MySolution ⇒ MyMainProject ⇒ bin ⇒ Debug ⇒ Main.exe のように出来ます 一方DLLは Projects ⇒ MyDLLProject ⇒ MyDLL.cppとなり、 これをビルドすると .dll .lib が MyDLLProject と同レベル位置にあるDebugホルダーの中に出来上がります メインはDLLを『暗黙の呼出し指定』で呼んでおりますので、Main.exeと同じホルダー入れたいのです 現在は毎回 .dll .lib をコピーした後に、改めてMain.exeを実行していますが、操作が煩雑でミスが多発して困っております もしDLLの.dll .lib をビルドの段階で Main.exe と同じホルダーに作ることが出来れば操作ミスは無くなります 何らかの方法があると思い色々調べましたが分かりません もしご指導頂ければ幸いです

  • [VC++2008].dllが見つからない

    Visual Studio C++ 2008で自作DLLを使用したプログラムを作成しています。 ソースツリーが以下のようにあります。 main.cpp で #pragma comment(lib,"myutil_d.lib") #include "myutil.h" とすると、コンパイルは成功するのですが、prog1.exeを実行すると: 「myutil_d.dllが見つからなかったため、このアプリケーションを開始できませんでした。」 と出てきてプログラムが始まりません。 これを解決する方法をご教授いただけるでしょうか? (MYPROGROOT) |-include | |-myutil.h | |-lib | |-myutil_d.dll | |-myutil_d.exp | |-myutil_d.lib | |-prog1 | |-Debug | | |-prog1.exe | | |-prog1.ilk | | |-prog1.pdb | |-prog1 | | |-Debug | | | |-BuildLog.htm | | | | ... | | | | | | |-main.cpp | | |-prog1.vcproj | | | |-prog1.ncb | |-prog1.sln | |-prog1.suo | |-prog2 |-Debug | |-prog2.exe | |-prog2.ilk | |-prog2.pdb |-prog2 | |-Debug | | |-BuildLog.htm | | | ... | | | | |-main.cpp | |-prog2.vcproj | |-prog2.ncb |-prog2.sln |-prog2.suo 「>ツール>オプション>プロジェクトおよびソリューション」下 インクルード ファイル :$(MYPROGROOT)\bin ライブラリ ファイル :$(MYPROGROOT)\include もちろんmyutil_d.dllを(MYPROGROOT)\prog\Debug\ に配置するとプログラムは動くのですが、prog1, prog2, と多数のプログラムで myutil_d.dllを使用するため、バージョン管理のために統一のディレクトリで .dllファイルを管理したいと考えています。

  • VisualStudio2003でDLLのデバックをブレークポイントやステップインで行う方法を具体的に教えて下さい。

    VisualStudio2003でDLLのデバックをブレークポイントやステップインで行う方法を具体的に教えて下さい。DLLのプロジェクトは、もうひとつのexeファイルと合わさって、1つのソリューションを構成しています。現状では、デバックを実行しようとすると、”デバック情報がありません”というダイアログボックスが開き、ブレークポイントの丸の上には、?が表示されます。

  • DLLを出力する位置の指定方法は?

    Visual Studio 2010 を使用して簡単なシステムを作っております ソリューションはMySystemと名付けました メインプログラムはC#で開発しており、MySystem_MAINといいます そのほかにDLLもありC++で開発しており、MySystem_DLLといいます MAINは『暗黙の指定』でDLLを呼びます 従ってDLLの出力はMAINと同じ位置にしようと思い、次のように指定しました (1) DLLのプロパティ ⇒ 構成プロパティ ⇒ 全般 ⇒ 出力ディレクトリに以下のように指定しました G:\Projects\MySystem\MySystem_MAIN\bin\Debug\ (2) DLLのプロパティ ⇒ 構成プロパティ ⇒ リンカー ⇒ 出力ファイルに以下のように指定しました G:\Projects\MySystem\MySystem_MAIN\bin\Debug そこでソリューションのリビルトを実行すると以下のWarningが出ます TargetPath(G:\Projects\MySystem\MySystem_MAIN\bin\Debug\MySystem_DLL.dll) が Linker の OutputFile プロパティ値 (G:\Projects\MySystem\MySystem_MAIN\bin\Debug) と一致しません。このため、プロジェクトが正常にビルドされない可能性があります。この問題を解決するには、$(OutDir)、$(TargetName)、および $(TargetExt) の各プロパティ値が、%(Link.OutputFile) で指定されている値と一致することを確認してください。 そして結局リビルトは失敗に終わります DLLはMAINのところには出来ず、G:\Projects\MySystem\MySystem_DLL\bin\Debugのところに出来ています 失敗の原因はここにあると思います どのようにすればMAINと同じ位置にDLLを出力できるでしょうか? 色々調べましたが分かりません、是非ご指導願います

  • vb2022 Deployment project

    visual stdio2022 visual basic deployment project propertiesでインストーラを作成したときに Setup1\Releaseの中に Setup.exeとSetup1.msiができます。 どちらも同じ動きをしますが、Setup.exeは単独では動作できず、Setup1.msiを求めてきます。 Setup1.msiは単独でインストールできます。 この違いは何ですか? 結論的に同じ環境に配布するならSetup1.msiだけで良いという事ですか?

  • BCBで作成したDLLを、VC++で静的リンクさせる方法

    BCBで作成したDLLを、VC++で静的リンクさせる方法 Borland C++ Builderで作成したDLLを、VC++アプリケーションで利用できるように LIBファイルに変換したいのですが、上手くいきません。 下記の手順を踏みました。 1. BCBでDLL作成   「VC++スタイルのDLL」で作成、   「VCLを使う」「CLXを使う」「マルチスレッドを使う」はチェックせず 2. コマンドラインで「IMPDEF.exe」を使用して、dllからdefファイル作成   (IMPDEF.exeは、\Borland\CBuilder6\Binに格納されていた) 3. コマンドラインで「LINK.exe」「LIB.exe」を使用して、defからlibファイル作成   (LINK.exeとLIB.exeは、\Microsoft Visual Studio\VC98\Binに格納されていた) 4. VC++プロジェクトファイルを保存したフォルダに、DLLファイルとlibファイルをコピー 5. VC++の「プロジェクト」-「設定」-「リンク」-「オブジェクト/ライブラリモジュール」に   作成したlibファイルを追加 VC++プロジェクトをビルドすると、下記のエラーメッセージが表示されます。 ///////////////////////////////////////////////////////////////////////////////// dllread.obj : error LNK2001: 外部シンボル "__imp__(関数名)@0" は未解決です LIBC.lib(wincrt0.obj) : error LNK2001: 外部シンボル "_WinMain@16" は未解決です Release/dllread.exe : fatal error LNK1120: 外部参照 2 が未解決です。 link.exe の実行エラー ///////////////////////////////////////////////////////////////////////////////// BCBとVC++のバージョンは、下記の通りです。 BCB Professional 6.0 VC++ 6.0 ちなみに、同じDLLを動的リンクで利用することは出来ました。 初心者の質問で申し訳ございませんが、解決策が分かる方がいらっしゃいましたら 教えていただけないでしょうか?

  • DLLエラー修復ツール

    先ほどこのサイト↓から http://www.easydllfixer.com/31339-isource30.dll-error-jp.html DLLエラー修復ツールをインストールしスキャンしましたがエラーは直りませんでした。 インストールしたら setup.exe と書かれたトロフィーのようなアイコンが出てきたんですが あとで setup.exe と検索したら個人情報流出などと出てきて怖くなりました。 すぐにアンインストールしました。 このサイトのDLLエラー修復ツールは安全なんでしょうか? 分かる方どうかよろしくお願いいたします!

  • プログラミングおかしいところ探してください

    #include<iostream> using namespace std; int main() { int i = 0; char a[128]; cout << "やあ" << endl; cin >> a; while (i<= strlen(a)){ if (a[i] == 'ワ'&&a[i + 1] == 'ン'){ cout << "ニャア"; i = i + 2; } else if (a[i] == 'わ'&&a[i + 1] == 'ん'){ cout << "にゃあ"; i = i + 2; } else{ cout << a[i]; i++; } } return 0; } キーボードから入力された文字に「ワン」「わん」があれば「ニャア」「にゃあ」と言い換えるプログラムを組もうとしたのですが、デバックするとエラーが出ます。 'Project2.exe' (Win32): 'C:\Users\kazuaki\Documents\Visual Studio 2013\Projects\Project2\Debug\Project2.exe' が読み込まれました。シンボルが読み込まれました。 'Project2.exe' (Win32): 'C:\Windows\System32\ntdll.dll' が読み込まれました。PDB ファイルを開けないか、ファイルが見つかりません。 'Project2.exe' (Win32): 'C:\Windows\System32\kernel32.dll' が読み込まれました。PDB ファイルを開けないか、ファイルが見つかりません。 'Project2.exe' (Win32): 'C:\Windows\System32\KernelBase.dll' が読み込まれました。PDB ファイルを開けないか、ファイルが見つかりません。 'Project2.exe' (Win32): 'C:\Windows\System32\msvcp120d.dll' が読み込まれました。PDB ファイルを開けないか、ファイルが見つかりません。 'Project2.exe' (Win32): 'C:\Windows\System32\msvcr120d.dll' が読み込まれました。PDB ファイルを開けないか、ファイルが見つかりません。 プログラム '[5180] Project2.exe' はコード 0 (0x0) で終了しました。 何がまずいのでしょうか。

  • DLLファイルのインストールができません。

    WIN95を再インストールしたのですが、エクセル97を起動しようとすると、 「起動にはOLEAUT32.DLLが必要です。セットアップメニューより再インストールしてください」と表示されたので、スタート~検索~で調べると、同名のファイル(ただしWIN2.1用)がありましたので、これ削除しようとすると「このファイルはウィンドウズ95内で使用中のため削除不可」というコメントが出ます。仕方なく、他のパソコンから95用バージョンの同名ファイルをFDDにコピーしてC¥WINDOWS¥SYSTEMにコピーしようとしても、「同名のファイルがあるため不可」の表示が出て前に進みません。他のインストール法をご存知の方、どうか教えてください。

専門家に質問してみよう