现在的位置: 首页 > 综合 > 正文

vc做的供其他语言调用的dll的例子 (传递的是字符串格式的参数)

2013年07月12日 ⁄ 综合 ⁄ 共 891字 ⁄ 字号 评论关闭

// 

http://hi.baidu.com/yzcaimz/item/9405131cedeaa5e85e53b1cd

 

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

 

抱歉!评论已关闭.