C#でネイティブDLLを埋め込む方法

埋め込みの方法自体はこちらを参考に。

Ralf's Sudelbücher - Single Assembly Deployment of Managed and Unmanaged Code
http://weblogs.asp.net/ralfw/single-assembly-deployment-of-managed-and-unmanaged-code

プロジェクトへのリソースの追加は、こっちを参考に。

埋め込むし、Visual C# を使用してリソースにアクセスする方法
https://support.microsoft.com/ja-jp/kb/319292/ja

Visual Studio上でDLLをプロジェクトに追加し、以下のように埋め込みリソースに変更する。

テキスト ファイルまたはビットマップのいずれかを右クリックし、[プロパティ] をクリックします。
[プロパティ] ダイアログ ボックスで、[ビルド アクション] プロパティを見つけます。既定では、このプロパティを [コンテンツ。プロパティをクリックし、ビルド アクションプロパティを埋め込まれたリソースに変更します。

リソースの名前は「MyNamespace.xxx.dll」で参照できる。

上記の方法だけだと、配布時のexeにはDLLがつかないものの、
リソースをファイルに展開してしまい、そのまま削除はされない。
そこで、ファイルを削除しようと試みるも、プロセスの実行中のためDLLは削除できない、という状況に陥る。

そのため、DLLをunloadしてから、削除すれば問題ない。
C#からDLLのアンロードは以下のとおり。

c# - Unload a DLL loaded using DllImport - Stack Overflow
http://stackoverflow.com/questions/2445536/unload-a-dll-loaded-using-dllimport

Posted at : 2015-04-19 13:55:48 / Category : none

Comments

まだコメントはありません / No comment.

Send comment


Name


Mail-address (empty is OK. If you want to notify update, please fill mail-address.)


Bot check code (241231 と入力してください / Please input 241231.)