C++與C#混合編程

C++和C#混合編程

最近須要利用C++和C#混合編程,而後就寫了一個C#調用C++生成的DLL的DEMO。困擾我很久的就是C#中string類型在C++裏面怎麼表達,如今把C++生成DLL供C#調用的流程寫出來。html

源碼:百度網盤編程

一、打開VS建立C++項目"C++_CScharp_DLL"ide

點擊肯定以後接着點擊下一步:post

而後選擇應用程序和附加選項:測試

點擊完成,C++的項目就新建好了。url

二、添加代碼文件spa

右鍵項目,添加類,以下圖所示:3d

添加類以後會打開添加文件對話框,點擊添加便可,以下圖所示:調試

點擊肯定以後進去下一個對話框,填寫文件名Function,以下圖所示:code

添加好後會生成h文件和cpp文件,以下圖所示:

Function.h文件代碼以下:

複製代碼
#pragma once
#include <string>
public ref class Function
{
public:
    Function(void);
    ~Function(void);
    int menber;
    int menberFuncAdd(int a,int b);
    System::String^ say(System::String^ str);
};
複製代碼

Function.cpp文件代碼以下:

複製代碼
#include "Function.h"


Function::Function(void)
{
}


Function::~Function(void)
{
}

int Function::menberFuncAdd(int a,int b)
{
   return a+b;
}
System::String^ Function::say(System::String^ str)
{
   return str;
}
複製代碼

填寫完後Function.h文件會報錯,錯誤類型以下:

這裏須要在C++項目裏面設置,讓動態庫受到公共語言運行時的支持。以下圖所示:

打開項目屬性

修改完成後點擊項目右鍵生成DLL,看是否報錯,成功結果以下圖:

三、添加測試程序:

在該解決方案中添加測試程序:

添加一個C#控制檯測試程序:

添加完後設爲啓動項:

添加引用:

將C++項目添加到C#的項目中:

四、編寫測試代碼

Program.cs文件代碼以下:

複製代碼
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Test
{
    class Program
    {
        static void Main(string[] args)
        {
            Function fun = new Function();
            Console.WriteLine(fun.menberFuncAdd(1, 2));
            Console.WriteLine(fun.say("Hello World"));
            Console.ReadKey();
        }
    }
}
複製代碼

如今就能夠點擊調試按鈕調試了,調試結果如圖所示:

相關文章
相關標籤/搜索