记录一下 c#程序调用c++写的工具

首先新建c++

momo.h

#pragma once
#ifndef _momo_h
#define _momo_h
extern "C" _declspec(dllexport) int test(char* str);
#endif

momo.cpp

#include "momo.h"
#include 
#include 

int __stdcall test(char* str)
{
    char s[1024] = "公共设施";
    char attr[1024];
    memset(attr, 0, sizeof(attr));
    memcpy(attr, s, sizeof(s));
    memcpy(str, attr, sizeof(attr));
    return 1;
}

然后再c#里面使用

static void Main(string[] args)
{
   byte[] s = new byte[2050];
   int t = momo(ref s[0]);//用字节数组接收动态库传过来的字符串
   Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);//注册gb2312 
   string strGet = System.Text.Encoding.GetEncoding("gb2312").GetString(s, 0, s.Length); //将字节数组转换为字符串
   Console.WriteLine(strGet);
}

[DllImport(@"C:\Users\漠漠\source\repos\hello\x64\Debug\hello.dll", EntryPoint = "test")] //这里用到了 EntryPoint  下面的方法就可以随意命名  
public static extern string momo();
 /*
 // DLL 中函数名为 "demo"
[DllImport("hello.dll")]
public static extern void demo(); // 方法名与 DLL 函数名一致
 */

补充一点

1.在vs里面添加c++dll库 注意 选择不使用预编译头