两种c++转c#的方式

方式一:(针对c++类)

转自:

https://www.cnblogs.com/GIScore/p/5872565.html (这种方法推荐使用):

最近需要利用C++和C#混合编程,然后就写了一个C#调用C++生成的DLL的DEMO。困扰我好久的就是C#中string类型在C++里面怎么表达,现在把C++生成DLL供C#调用的流程写出来。

源码:百度网盘

1、打开VS创建C++项目"C++_CScharp_DLL"

两种c++转c#的方式_第1张图片

点击确定之后接着点击下一步:

两种c++转c#的方式_第2张图片

然后选择应用程序和附加选项:

两种c++转c#的方式_第3张图片

点击完成,C++的项目就新建好了。

2、添加代码文件

右键项目,添加类,如下图所示:

两种c++转c#的方式_第4张图片

添加类之后会打开添加文件对话框,点击添加即可,如下图所示:

两种c++转c#的方式_第5张图片

点击确定之后进去下一个对话框,填写文件名Function,如下图所示:

两种c++转c#的方式_第6张图片

添加好后会生成h文件和cpp文件,如下图所示:

两种c++转c#的方式_第7张图片

Function.h文件代码如下:

复制代码

#pragma once
#include 
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++转c#的方式_第8张图片

这里需要在C++项目里面设置,让动态库受到公共语言运行时的支持。如下图所示:

打开项目属性

两种c++转c#的方式_第9张图片

两种c++转c#的方式_第10张图片

修改完成后点击项目右键生成DLL,看是否报错,成功结果如下图:

两种c++转c#的方式_第11张图片

3、添加测试程序:

在该解决方案中添加测试程序:

两种c++转c#的方式_第12张图片

添加一个C#控制台测试程序:

两种c++转c#的方式_第13张图片

添加完后设为启动项:

两种c++转c#的方式_第14张图片

添加引用:

两种c++转c#的方式_第15张图片

将C++项目添加到C#的项目中:

两种c++转c#的方式_第16张图片

4、编写测试代码

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();
        }
    }
}

复制代码

现在就可以点击调试按钮调试了,调试结果如图所示:

 源码:百度网盘

 

 

方式二:(针对c++方法)

参考:

https://blog.csdn.net/zxy13826134783/article/details/78826071

文章里面的虽然是介绍的是供unity 3d使用,其实原理都是一样的

 

 

2020年5月6日更新:

第三种参考:

https://blog.csdn.net/zxy13826134783/article/details/105958311

你可能感兴趣的:(C#编程,c,c#,c,转c#,dll)