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 @ 2012-11-08 17:09  郑文亮  阅读(1435)  评论(0编辑  收藏  举报