上篇文章提到,目前項目想做到核心部分代碼不被反編譯,而考慮到團隊成員都是比較熟悉C#,因此 核心算法部分采用C++,而其他地方則采用C#(例如數據訪問層,界面層都使用C#語言)。在上一篇文章 中完成了C#托管代碼調用C++非托管代碼,現在接著完成第二部分,即C++非托管代碼調用C#托管代碼,分 為兩部分,首先C#建立COM+組件,其次是C++調用COM+組件。
C#建立COM+組件
1. 在VS中,新建類庫ComInterop
2. 在類庫新增接口:ComInteropInterface, 及相應的實現ComInterop, ComInterop同時必須繼 承自ServicedComponent。ComInteropInterface中有兩個簡單接口:
int Add(int a, int b);
int Minus(int a, int b);
具體代碼如下:
using System;
using System.Collections.Generic;
using System.Text;
using System.Reflection;
using System.Runtime.InteropServices;
using System.EnterpriseServices;
namespace ComInteropDemo
{
//接口聲明
[Guid("7103C10A-2072-49fc-AD61-475BEE1C5FBB")]
public interface ComInteropInterface
{
[DispId(1)]
int Add(int a, int b);
[DispId(2)]
int Minus(int a, int b);
}
//對於實現類的聲明
[Guid("87796E96-EC28-4570-90C3-A395F4F4A7D6")]
[ClassInterface(ClassInterfaceType.None)]
public class ComInterop : ServicedComponent, ComInteropInterface
{
public ComInterop() { }
public int Add(int a, int b)
{
return a + b;
}
public int Minus(int a, int b)
{
return a - b;
}
}
}