• ベストアンサー

exeとdll

こんにちわ。 いまVB6.0で開発しています。 メイン(exe)が1つと,それとは独立したサブ(exe)が1つある構成です。 今回メインのなかからサブを呼び出す仕組みに変えたいのですが, このような場合,サブはdllにしたほうが良いのでしょうか? それからそもそもユーザアプリケーションをdll化するメリット(理由)はどういうものでしょうか? 教えてください。 よろしくお願いします。

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

  • ベストアンサー
  • Kuppycat
  • ベストアンサー率50% (109/216)
回答No.1

サブを単体で動かすことがある場合、dllではなくexeにする必要があります。 VB6.0だとActiveX Exeですね。 サブはメインから呼ぶだけならば、dllでよいです。 dll化するメリットとして、ファイルの肥大化防止、リソースの分散、部品化することによる共有化などがあげられます。

tatsurou
質問者

お礼

Kuppycatさん dll化するメリットがわかりました。 回答ありがとうございました。

関連するQ&A

  • EXE/DLLに埋め込まれた画像

    よくフリーソフトなどでEXE/DLL等に埋め込まれた画像を取り出すツールというものを見かけるのですが,そのツールを作るにはどのようにすればよいのでしょうか? また,モジュールに埋め込まれた画像を同じサイズの画像となら置き換える事ができる気もするのですが可能なのでしょうか?教えてください。 開発はVB6.0で行い処理の対象となるモジュールもVB6.0で作成されたものを想定しています。

  • MFCのexeのプログラムを MFCのdllに書き換えたい

    VC++6.0を使用しています 新規作成 MFC AppWizard(exe) 新規 OK [ステップ1] ダイアログベース 次へ [ステップ2/4] 次へ [ステップ3/4] 次へ [ステップ4/4] 終了 で作られた、雛型のexeをそっくりMFCのDLLに書き換えたい と考えています exeで作られたアプリを他のユーザーがVB6.0からDLLとして呼び出したいので書き換えて欲しいと頼まれました MFCのDLLも雛型は簡単に出来上がるのですが 以下の関数を独立したオブジェクトにして、VB6.0からDLLの関数VBFUNC1として呼び出したいのですが、VBから呼び出すと AfxEnableControlContainer();でアサートで引っ掛かってしまいます ダイアログを使用したMFCのEXEをDLLとして使う場合の、コーディングについてご指南ください BOOL CAaaApp::VBFUNC1() //BOOL CAaaApp::InitInstance() {   AfxEnableControlContainer(); #ifdef _AFXDLL   Enable3dControls(); #else   Enable3dControlsStatic(); #endif   CAaaDlg dlg;   m_pMainWnd = &dlg;   int nResponse = dlg.DoModal();   if (nResponse == IDOK)   {   }   else if (nResponse == IDCANCEL)   {   }   return FALSE; }

  • DLL内部異常発生時、EXEをまきこまれない

     現在、Windows上で動作する、とあるEXEを開発しています。 <EXE実行環境> OS:Window7 32bit <EXE開発環境> MS VC++2008 ※言語は、C++/CLI <DLL開発環境> MS VC++2008 ※言語は、C++ 私自身が携わっているEXEから、必要に応じて、外部委託したDLLを呼出すことを行っています。 現状、結合テストを行っている最中なのですが、この「DLL」がひどいできで、頻繁に異常終了します。 DLL異常終了で、EXEが巻き込まれてしまう為、テスト者に頻繁に呼出されてしまうのを避けたいのです。(このDLLの開発チームというか、開発者が、そもそもテストしたのかどうか疑っているレベルです) 例えば、EXE側で例外トラップ等をしてやることで、DLL内部で発生した異常を完全に捕らえることは可能でしょうか。 また、別途良い方法はないでしょうか。

  • ディストリビューションウィザードの使用してのsetup.exeの再作成について

    VB初心者ですが、以下の事が可能であるかを教えて下さい。 現在既存の正常に稼動する実行ファイルがあります。 その実行ファイルは、ディストリビューションウィザードの使用して パッケージを作成し、そのsetup.exeを使用しインストールしてあります。 システム(?)の構成としては、メインのexeファイルといくつかのDLLから 構成されています。 このDLLのうちの一つとメインのexeファイルを変更して (正しくいうと、メインのプロジェクトに修正変更をかけexeファイルを作成し直し  サブのプロジェクトに修正変更かけDLLファイルを作成し直す。) 変更した物と変更していない物に関しては既存のパッケージ時のDLLを使用し ディストリビューションウィザードを用いてsetup.exeを再作成しても インストール後は正常に動作する物なのでしょうか? どなたか、ご教授下さい。宜しくお願いいたします。

  • 教えてください!『WHC.EXE-コンポーネントが見つかりません。prm95.dllが~

    winXP、起動時に、WHC.EXEコンポーネントがみつかりません:『prm95.dllが見つからなかったため、このアプリケーションを開始できませんでした。アプリケーションをインストールし直すとこの問題は解決される場合があります』とアナウンスされてしまいます。色々と試したのですが、解決できません。解決策をご存知の方、是非教えていただけませんでしょうか?宜しくお願いします。そもそも、『prm95.dll』ってのが、まったく分かりません。

  • ActiveX DLL と ActiveXコントロールの違い

    VB6で開発をしています。 複数のEXEファイルを使用するシステムです。 各EXEファイルの共通のモジュールをライブラリ化しようと思っています。 これは [ActiveX DLL] 又は、[ActiveXコントロール] のどちらでも実現できると思うんですが、どちらで作成した方が良いのでしょうか? それぞれのメリット、デミリットを教えて下さい。

  • ACCESSのEXEを作るのは可能ですか?

    VBでアプリケーション開発後EXEを作成する事が出来るのは 知っているのですが、どうやら、ACCESSでもEXEが作成 出来ると聞いて調べているのですが、全く何もわかりません。。。 誰か、ご存知でしたら教えて頂けませんでしょうか???

  • EXEにDLLファイルを同梱したいです。

    http://kidd0320.hatenablog.com/entry/2014/06/06/142355 EXEにDLLファイルを同梱するため、こちらのサイトを参考にしたのですが、ソフトを別のパソコンに入れたところ”MSVCP120D.dllがないため、プログラムを開始できません。” と表示されてしまいます。 開発環境はC++でOPENCVを使っています。 開発ソフトはMicrosoft Visual Studio Express 2013 for Windows Desktopを使っています。 構成はReleaseでプラットフォームはwin32です。 どうすればよいでしょうか。 どなたかご教授いただけないでしょうか。

  • DLLインポートについて

    A.exe ⇒ B.dllの関数 ⇒ C.dllの関数 の順で関数をコールするのですが、C.dllの関数をコールする際に DllNotFoundExceptionが出てしまいます(「'C.dll' を読み込めませんでした。」) また、上記エラーはPCによって発生しない場合もあるのですが、 原因として何が考えられるでしょうか。 動作確認したPCのフォルダ構成は同じで下記のようになっており、 EXEとDLLはすべて同じフォルダ内に存在しているため原因がよくわかりません。 BIN ├A.exe VB.net ├B.dll VB.net └C.dll C言語

  • 異なるexeから参照しているdllの変数は実行時のメモリ領域として独立的か?

    結論から質問内容を言うと、 異なるexeから参照しているdllの変数は実行時のメモリ領域として独立的か? 具体的には、 A.exeと、B.exeの両方で参照している Common.dllに定義しているクラスの staticなフィールドは、A.exe実行時のメモリ領域と、 B.exe実行時のメモリ領域と、完全に別で独立状態 であることを前提にしているのですが。。。 これは本当に真なのかを確認させてください。 あたりまえじゃねーかバカ野郎っていわれそうですが ちょっと、そこ間違えると後で、痛いので、 念押しで再確認お願いします。 <質問に至った経緯> Delphi3.0からVB.NET2003(2005未対応のコンポーネントを使用する諸事情があったから) にシステム移行の案件があり、 工数を避けません。現在、開発方針を検討中で調査していると、デルファイプロジェクトAと、 デルファイプロジェクトBで、Commonという名前の フォルダにあるソースを共有していて、 A.exeとB.exeを作っていました。 特に共通部分をdllにしていたりしていませんが。 VB.NETでそれは、きついので、 Commonにあるソースだけ、集めたCommon.dllを作る プロジェクトを作り、Aプロジェクト、BプロジェクトがCommon.dllを参照するやり方を検討しました。 Common.dllには、たくさんグローバルな変数が定義されていたので、 グローバルなデータは、もともとのソースファイルごとにクラスを 作ってそこにスタティックなフィールドとして宣言していく。それをAや、Bのプロジェクトのソースで 使うが、もともと、デルファイがexeが完全にわかれていたので、VBでdllに分けた結果、実行時にメモリも 共有されると、意図した動きをしてくれない懸念が あるので、それはないのかどうかを確認したかった。 ########################################### 以上です。