VC中的DLL代码:
Code
#include <string.h>
#include <stdlib.h>
#include <windows.h>
extern "C" _declspec(dllexport) char* GetChar(HWND handle,int * pi, int count)
{
char* test=new char[count];
char temp[10];
for (int i=0;i<count;i++)
{
itoa(pi[i],temp,10);
strcpy(&test[i],temp);
}
test[i]='\0';
return test;
}
C#中调用:
Code
[DllImport("Dll1.dll")]
public static extern string GetChar(IntPtr hwnd, int [] pi, int count);
//两种方法都可以,返回的类型不一样
[DllImport("Dll1.dll")]
public static extern IntPtr GetChar(IntPtr hwnd, int[] pi, int count);
在方法中调用:
Code
//第1种调用
int[] pi = new int[5] { 5, 4, 3, 2, 1 };
string str = GetChar(this.Handle, pi, 5);
MessageBox.Show(str);
//第2种调用
int[] pi = new int[5] { 5, 4, 3, 2, 1 };
IntPtr p = GetChar(this.Handle, pi, 5);
string str = Marshal.PtrToStringAnsi(p);
MessageBox.Show(str);
相关例子:
http://download.csdn.net/source/1255334