UnmanagedなDLLの読み込み

http://d.hatena.ne.jp/yaneurao/20060315#p1
すっかり出遅れたので、自分の日記で。

UnmanagedなDLLは.NETの管轄外なので、完全にコントロールするのは無理です。そこでCLRホスティング・・・とか言いたいところですが、そうするとWin32どっぷりになり、Linux/Macで動作させることが困難になります。再コンパイルが許されるのなら、ソース上にざっくり書いてしまうのも一つの手です。

using System;
using System.Runtime.InteropServices;

class Program {
    const string DLL = @"lib\func.dll";
    [DllImport(DLL)]
    public static extern int Add(int x, int y);
    [DllImport(DLL)]
    public static extern int Sub(int x, int y);

    public static void Main () {
        Console.WriteLine (Add(10, 20));
        Console.WriteLine (Sub(10, 20));
    }
}

うわっローテク。オッカムの剃刀で問題を削りすぎたか!(^^;

ところで、DllImportに渡すDLL名をリソースから引っ張る事って出来ましたっけ? もし可能なら埋め込みリソースの書き換えにした方がスマートですね。