记录一下 c#程序调用c++写的工具
首先新建c++
momo.h
#pragma once
#ifndef _momo_h
#define _momo_h
extern "C" _declspec(dllexport) int test(char* str);
#endifmomo.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库 注意 选择不使用预编译头



