DLLがEXEに組み込まれない – プログラミング – Home

DLLがEXEに組み込まれない
 
通知
すべてクリア

DLLがEXEに組み込まれない


cool
 cool
(@cool)
ゲスト
結合: 9年前
投稿: 1
Topic starter  

あるdllを必要とするexeがあります。

配布する際、exeのみとしたく、
exeにdllを組み込んで
1つのexeにしたいのですがうまくいきません。

試したことは、

「構成プロパティ」→「C/C++」→「コード生成」→「ランタイムライブラリ」
にて
「マルチスレッド (/MT)」
に設定しました。

dllの呼び出し方法は、
静的リンクと動的リンクともに試しましたが、
実行時にdllが要求されます。

静的リンクでは
起動時にdllがない旨のメッセージボックスが表示されます。

動的リンクでは
にてLoadLibrary(xxxx.dll)はNULLを返します。

どうぞ、ご教授お願いいたします。


引用解決済
トピックタグ
YuO
 YuO
(@YuO)
ゲスト
結合: 22年前
投稿: 320
 

「ランタイムライブラリ」の項目で変更できるのは,CRTと呼ばれる,VC++の標準ライブラリの
種類のみです。
ここの項目を変更しても,他のDLLの取り扱い方に変化はありません。

基本的に,DLLをEXEに組み込むことはできません。
リソースにでも持っておき,実行時にテンポラリディレクトリあたりに書き出して
LoadLibrary,が一番現実的かと思います。

一応,LoadLibrary from memoryで探すと
http://www.codeproject.com/Tips/430684/Loading-Win-DLLs-manually-without-LoadLibrary
等々が見つかるのですが,PEの再配置ヘッダ見て云々と,LoadLibraryがやっていることを自前
でやる必要があり,さらに制限が色々あるようです。
これでもよいというのであれば,先人のコードを使ってみるのもよいとは思います。


返信引用
仲澤@失業者
(@uncle_kei)
Prominent Member
結合: 5年前
投稿: 828
 

当該DLLをビルド可能な完全なソースがある場合は、
そのソースを使って、スタティックライブラリを作成し、
それをEXEにリンクします。一部ソースの変更が必要になるかもしれません。

さて、配布上の煩雑さだけの問題であるなら、

1.EXE+DLLの自己解凍圧縮ファイルを作成する。
2.セットアッププロジェクトを作成してインストールファイルを作成する。

等も考えられます。一般には2.の手段が適当です。
また、

3.MFC等を使用している場合は事実上2.しか手段はありません。


返信引用
ITO
 ITO
(@ITO)
ゲスト
結合: 22年前
投稿: 1235
 

インストールに、c:\windows c:\windows\system等にDLLをコピーして動的リンク
(LoadLibrary)かな?


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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