vc做的供其他语言调用的dll的例子 (传递的是字符串格式的参数)
VC 工程
char* p = NULL;
extern "C" _declspec(dllexport)
char* _stdcall output_number(char* aa)
{
CString s = aa;
s += "abcd";
int nlen = s.GetLength();
if(p != NULL)
{
delete[] p;
p = NULL;
}
p = new char[nlen + 1];
p[nlen] = 0;
memcpy(p,s.GetBuffer(0),s.GetLength());
return p;
}
extern "C" _declspec(dllexport)
void _stdcall deleteaa()
{
if(p != NULL)
{
delete[] p;
p = NULL;
}
}
调用方:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
namespace WindowsFormsApplication4
{
public static class Class1
{
[DllImport("pb.dll")]
public static extern string output_number( string str);
[DllImport("pb.dll")]
public static extern void deleteaa();
}
}
string aaa;
//char* aaa;
private void button1_Click(object sender, EventArgs e)
{
string s = "256\0";
aaa = Class1.output_number("2567");
MessageBox.Show(aaa);
}
private void button2_Click(object sender, EventArgs e)
{
Class1.deleteaa();
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· [AI/GPT/综述] AI Agent的设计模式综述