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