- ベストアンサー
[C#] DLLの統合について
- C#で開発中のDLLに他社製のDLLを統合したいです。
- C#ではスタティックリンクはできないため、他の方法を探しています。
- 現在の環境はVisual Studio 2012と.NET Framework 4.5です。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
追記。 ILMergeは.NETで作られたアセンブリ(DLL)だけが結合可能(C#で作ったDLLや、他社から購入したDLLは結合できない可能性が非常に高い)です。 >その中で他社から購入したDLLを使用しているのですが、 >それをユーザーに見せないようにしたいと言われました。 根本的な方針転換をして「インストールフォルダにDLLファイルは存在しているけど、ユーザーからは見えない」と言う方式に転換してみてはどうでしょう? ファイルを隠す方法は、色々あります(悪用の可能性があるので、ここでは方法は説明できませんが)
その他の回答 (2)
- anmochi
- ベストアンサー率65% (1332/2045)
あれ、ILMergeにDLLをまとめる機能ってあったはず。 なんだけど、やっぱり基本的に多分EXEと付随DLLをまとめるプログラムなのでEXE一つにする方向で上に打診してみると良いのではないでしょうか。 C:\> ilmerge.exe /v4 /out:after.exe before.exe aaa.dll bbb.dll ccc.dll ddd.dll という風にv4オプションをつけて実行しても起動時に落ちるのであれば.Net 4.5には対応していないという事なのかも。
お礼
ご回答ありがとうございます。 > やっぱり基本的に多分EXEと付随DLLをまとめるプログラムなのでEXE一つにする方向で上に打診してみると良いのではないでしょうか。 実は、EXEが.NETで作られておらず、EXE一つにするのも難しいです。 (その記述がありませんでした。申し訳ございません。) EXE(C++)内で開発中のDLL(C#)を実行し、その開発中のDLL(C#)内で購入したDLL(C#)を実行しているような形です。 一応、「C#はスタティックリンクできないので購入したDLLを開発中のDLLに含めてしまうことはできない。EXEでもないのでILMergeも不可。EXEがC++で作られているのでEXE一つにまとめるのも難しい。」とお伝えした所、"DLLだけで何とかして一つにまとめたいのだが、どんな手段でも本当に絶対ないのか"と問われて再調査しているところでして… 購入したDLLのソースコードも購入先から頂いたので、自分のプロジェクトに追加してしまえば簡単な話なのですが、単純にプロジェクトに追加するだけでは大量のエラーが発生して途方にくれている状態です。(購入先もそういった顧客は今までいなかったので上手く行くかはわからないといっています。)
- chie65536(@chie65535)
- ベストアンサー率44% (8757/19871)
>また、ILMergeというものもありますが、実行ファイルに対してDLL取り込みを >行うようでDLLに対して行えないように見受けられます。 ILMergeは「DLLを要求するexe本体に、要求されるDLLをマージする物」です。DLLにDLLはマージ出来ません。 なので「出来上がるexeに、開発中のDLLと、購入したDLLの両方をマージ」するのは可能です。 > (試しに実行してみたところファイル生成まではされましたが > 起動時に落ちてしまいました…) exeにマージしたDLLは「LoadLibrary(Ex)関数で明示的にロード」しないと動きません。
お礼
ご回答ありがとうございます。 > ILMergeは「DLLを要求するexe本体に、要求されるDLLをマージする物」です。DLLにDLLはマージ出来ません。 やはりそうですよね…実はできてしまう方法があったり、なんて幻想を抱いてしまいました。 試しにやってみたのはDLL同士のマージでして、ILMergeでファイル出力されたのでもしかしてと思ってしまいました。 ILMergeのできる範囲がよくわかりました、ありがとうございます。 > exeにマージしたDLLは「LoadLibrary(Ex)関数で明示的にロード」しないと動きません。 やっているはずだとは思いますが、確認してみます。 現在の事情は、anmochiさんのお礼コメントに記述した通りになります。
お礼
追記ありがとうございます。 返信が遅くなり申し訳ございません。 > 根本的な方針転換をして「インストールフォルダにDLLファイルは存在しているけど、ユーザーからは見えない」と言う方式に転換してみてはどうでしょう? それは盲点でした! 確かに"見えないようにしたい"という要望に応えられます。 この頂いた案も含めて今一度相談してみたいと思います。 > ファイルを隠す方法は、色々あります(悪用の可能性があるので、ここでは方法は説明できませんが) 是非お聞きしたいところですが、悪用の可能性が有るならば仕方がないですね… これだっ!!というものを見つけられるか分かりませんが、調べてみます。
補足
遅くなって申し訳ございませんが、 "違う視点"を教示下さったchie65535さんをベストアンサーに させていただきます。