C++ 库的接口定义如下
#ifdef TESTDLL_EXPORTS
#define TESTDLL_API __declspec(dllexport)
#else
#define TESTDLL_API __declspec(dllimport)
#endif
//strMsg 输入参数, pRetMsg 输出参数
TESTDLL_API int WINAPI HelloDll(const char* strMsg,char * pRetMsg)
{
strcpy(pRetMsg,strMsg);
return 0;
}
功能是将一个参数的输入作为第二个参数输出
C#调用引用接口
using System.Runtime.InteropServices;//调用DLL需要的引用
[DllImport("TestDll.dll")]
public static extern int HelloDll(string strMsg, IntPtr ptr);//!!!注意这里要改变输出参数类型
private void button1_Click(object sender, EventArgs e)
{
char[] strRet = new char[textBox1.TextLength];
IntPtr ptr = Marshal.AllocHGlobal(textBox1.TextLength);
//Marshal.StructureToPtr(结构体, ptr, false);//如果是结构体
int nRet = HelloDll(textBox1.Text,