如果想用C#調用C/C++寫的函數,可以先將C/C++的函數寫成dll文件,由C#用DllImport的方式來調用,但是這種方法無法調用C++寫的類,如果想調用C++類,可以先把C++類封裝成COM組件,再由C#來調用。方法如下(以VS2008英文版為例說明)
一、新建一個Visual C++項目,類型為ATL Project,假設項目名為ComProject,直接點Finish即可。
二、在Solution Explorer的ComProject項目名上右擊,選擇Add->Class,選擇ATL Simple Object,在Short name里填上類名(假設為Hello),點Next,按需求進行選擇,然后點Finish。
三、切換到Class View視圖,在IHello上右擊,選擇Add->Method,為IHello接口添加一個方法,方法名為SayHello。打開Hello.cpp文件,在SayHello函數里加上MessageBox(NULL, _T("Hello"), _T("Hello"), MB_OK);,主要作測試用。
四、新建一個Visual C#項目,類型為Console Application,假設項目名為ComTest。在ComTest項目名上右擊,選擇Add Reference->Browse,在ComProject/Debug下找到ComProject.tlb這個文件,選中并點OK。
五、打開Program.cs,把代碼改成
using System;
using ComProjectLib;
namespace ComTest
{
??? class Program
??? {
??????? static void Main(string[] args)
??????? {
??????????? HelloClass hello = new HelloClass();
??????????? hello.SayHello();
??????? }
??? }
}
六、在ComTest項目名上右擊,選擇Set as StartUp Project,把此項目設為啟動項目,然后按Ctrl+F5運行即可,如果出現Hello這個消息框,說明調用COM組件成功。