C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

ILMergeを使用してのDLL組み込みでエラー

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■95038 / inTopicNo.1)  ILMergeを使用してのDLL組み込みでエラー
  
□投稿者/ Tom (29回)-(2020/06/17(Wed) 11:44:08)

分類:[インストーラ全般] 

c#で作成したアプリをいくつかのPCに展開したところ、エラーになるPCがありました。
調査すると USER32.DLL がないためエラーになったようです。
対策として ILMerge を使用してアプリそのものに USER32.DLL を組み入れようとしました。

そこで以下の問題が発生しました。
・[DllImport("user32.dll")] でインポートしている USER32.DLL はいったいどこにあるのでしょうか(Everythingでさがしたらサイズ違いのものが複数ありました)
・それらしいファイルを指定したらエラーになりました。 何が悪かったのでしょうか?
構文
 "c:\〜\ILMerge"  /out:new_hoge.exe  hoge.exe  "C:\Windows\WinSxS\〜\user32.dll"
エラーメッセージ
 An exception occurred during merging:
 ILMerge.Merge: Could not load assembly from the location 'C:\Windows\WinSxS\〜\user32.dll'. Skipping and processing rest of arguments.
  場所 ILMerging.ILMerge.Merge()
   場所 ILMerging.ILMerge.Main(String[] args)

賢者の方、お知恵をお貸しください。

引用返信 編集キー/
■95039 / inTopicNo.2)  Re[1]: ILMergeを使用してのDLL組み込みでエラー
□投稿者/ furu (49回)-(2020/06/17(Wed) 11:52:46)
No95038 (Tom さん) に返信
> c#で作成したアプリをいくつかのPCに展開したところ、エラーになるPCがありました。
> 調査すると USER32.DLL がないためエラーになったようです。
> 対策として ILMerge を使用してアプリそのものに USER32.DLL を組み入れようとしました。

無謀ですね。

ILMergeは.NETで作成したものしか駄目だと思います。
USER32.DLLはOSに近いところなので、他のPCで動くと思いません。

USER32.DLL がないってことは、Windowsではない?

引用返信 編集キー/
■95041 / inTopicNo.3)  Re[2]: ILMergeを使用してのDLL組み込みでエラー
□投稿者/ 774RR (793回)-(2020/06/17(Wed) 15:17:13)
user32.dll は WIN32API の入口(ユーザーが書いたソフトが呼び出すエントリ)の1つなので、
いわゆる native (unmanage) だから ILMerge の対象にはなりえないし
そのそも「無い」ことはありえない (Windows なら必ずある)

ので対策の手法として ILMerge で user32.dll を組み込むのは根本的に誤っているっす。
Windows であればエラーの本当の原因は「 user32.dll が無い」ではないはずなので
原因調査からやり直しっす。
引用返信 編集キー/
■95050 / inTopicNo.4)  Re[3]: ILMergeを使用してのDLL組み込みでエラー
□投稿者/ Tom (30回)-(2020/06/18(Thu) 10:35:54)
user32.dll をexeのフォルダにおいてもエラーになったため、みなさまのご指摘通りなにかそもそもおかしいです。
もう一度初めから原因究明しなおします。

お騒がせしました。
解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ