DLLを含むEXEファイルを実行する時にフォルダにEXEファイルのみで実行する方法 – プログラミング – Home

DLLを含むEXEファイルを実行する時...
 
通知
すべてクリア

[解決済] DLLを含むEXEファイルを実行する時にフォルダにEXEファイルのみで実行する方法


オリバ
 オリバ
(@オリバ)
ゲスト
結合: 18年前
投稿: 25
Topic starter  

環境は、
VC++6.0 ダイアログベースアプリケーション WinXP
です。

DLLを2つ含むアプリケーションを作成しました。
プロジェクトの「Debug」「Release」のフォルダに、
デバッグモード、リリースモードそれぞれで作成した
・CommPort.dll
・CommPort.lib
・Sonar.dll
・Sonar.lib
を持ってきます。

VCの「プロジェクト」⇒「設定」⇒「リンク」⇒「オブジェクト/ライブラリ モジュール」に

Release/CommPort.lib Release/Sonar.lib WSOCK32.LIB

と記述しました。

上記の状態で、「Debug」「Release」のEXEファイルを実行すれば問題なく実行できま
す。

しかし、「Release」のEXEファイルだけを別のディレクトリにコピーして持って行き
実行すると、以下のダイアログが現れ、実行できませんでした。

タイトル:oriva.exe - コンポーネントが見つかりません
本文  :CommPort.dllが見つからなかったため、このアプリケーションを開始できま
せんでした。アプリケーションをインストールし直すとこの問題は解決される場合があ
ります。

DLLをそのディレクトリに持ってくれば実行は可能です。
しかし、EXEファイルのみで実行できるようにしたいのですが、方法はありますか?
コンパイル時に設定するものなどがあれば教えて頂きたいのですが・・・


引用未解決
トピックタグ
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

>EXEファイルのみで実行できるようにしたいのですが
不可能です。
DLLとはそういうものですから。

DLLでなくスタティックライブラリを使うようにすればいいでしょう。
(Win32 Static Libraryからプロジェクトを作成して、生成されたXXX.LIBをリンクする)


返信引用
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

質問の意図が、exeと違う位置にDLLを置いても実行できるようにしたい ということで
あれば、
http://forums.microsoft.com/msdn-ja/ShowPost.aspx?PostID=1066344&SiteID=7
を参考にしてみてください。


返信引用
オリバ
 オリバ
(@オリバ)
ゲスト
結合: 18年前
投稿: 25
Topic starter  

>不可能です。
>DLLとはそういうものですから。

了解しました。ありがとうございます。

>DLLでなくスタティックライブラリを使うようにすればいいでしょう。
>(Win32 Static Libraryからプロジェクトを作成して、生成されたXXX.LIBをリンクす
る)

この方法ならxxx.LIBをリンクして生成されたEXEファイルだけで実行が可能ということ
ですか?

ちなみにDLLの場合、外からコールされる関数には、
例えばBOOL CComA_Open(void);という関数を外から実行したい場合、

DLL_EXPORT BOOL __stdcall CComA_Open(void);

と宣言する必要がありますが、
Win32 Static Libraryでは同じような決まりはありますか?


返信引用
オリバ
 オリバ
(@オリバ)
ゲスト
結合: 18年前
投稿: 25
Topic starter  

>質問の意図が、exeと違う位置にDLLを置いても実行できるようにしたい ということで
>あれば、

違います。
実際アプリを使用するときはEXEファイルのみなので、
DLLなど複数のファイルが必要となるとユーザーが面倒だと思いまして・・・


返信引用
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

>Win32 Static Libraryでは同じような決まりはありますか?
とりあえず、検索してみては?

「Win32 Static Library」でGoogle検索してみると
一番上のサイト(=MSDN)に詳しい解説がありますよ。
http://msdn2.microsoft.com/ja-jp/library/ms235627(VS.80).aspx

ただし、IDEはVC++6を対象に書かれていないので、そこらへんは
柔軟に対応してください。


返信引用
オリバ
 オリバ
(@オリバ)
ゲスト
結合: 18年前
投稿: 25
Topic starter  

>とりあえず、検索してみては?

すいません。安易に質問してしまいました。
今、検索しています。
もし、どうしてもわからないことがでてきたら新スレをたてて質問させていただきま
す。やれるだけやってみます。
「Win32 Static Library」は作成したことがなかったので
その存在を知っただけでも幅が広がりました。
ありがとうございました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました