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

 

 

 

 

posted @   郑文亮  阅读(1436)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 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的设计模式综述
点击右上角即可分享
微信分享提示