企むことがあってCOMの学習中。
既に廃れつつあって参考書が少ない中、いきなりアウトプロセスのサーバーに挑戦です。
32ビットしか提供されていないアンマネージドDLLを、64ビットのマネージドアプリから使う必要があり、32/64相互運用はアウトプロセスCOM経由が一つの方法だと目にしたもので。
CodeGuruにC++で記述したアウトプロセスサーバーのサンプルがありました。Windows SDKのDCOMサンプル"Simple"よりわかりやすいと思います。
またMSDNにC#クライアントの解説がありました。
IDLファイルがあればタイプライブラリのTLBファイルが作られるので、tlbimpしてアセンブリファイルを作り、参照設定から「参照の追加」してやれば良いとわかりました。
コードはこうなりました。
namespace CSClient
{
class Program
{
static void Main(string[] args)
{
Server.MiniDcom d = new Server.MiniDcom();
Server.IDouble id = (Server.IDouble)d;
int r0, r1;
r0 = 10;
r1 = id.Double(r0);
Console.WriteLine(r0 + "->" + r1);
}
}
}
既に廃れつつあって参考書が少ない中、いきなりアウトプロセスのサーバーに挑戦です。
32ビットしか提供されていないアンマネージドDLLを、64ビットのマネージドアプリから使う必要があり、32/64相互運用はアウトプロセスCOM経由が一つの方法だと目にしたもので。
CodeGuruにC++で記述したアウトプロセスサーバーのサンプルがありました。Windows SDKのDCOMサンプル"Simple"よりわかりやすいと思います。
またMSDNにC#クライアントの解説がありました。
IDLファイルがあればタイプライブラリのTLBファイルが作られるので、tlbimpしてアセンブリファイルを作り、参照設定から「参照の追加」してやれば良いとわかりました。
コードはこうなりました。
namespace CSClient
{
class Program
{
static void Main(string[] args)
{
Server.MiniDcom d = new Server.MiniDcom();
Server.IDouble id = (Server.IDouble)d;
int r0, r1;
r0 = 10;
r1 = id.Double(r0);
Console.WriteLine(r0 + "->" + r1);
}
}
}