正在阅读:C#中简单调用c/c++旧模块C#中简单调用c/c++旧模块

2005-06-14 10:18 出处: 作者:windend 责任编辑:moningfeng
在C#中再调用测试:   string strDest="";   string strTmp= RefComm. mySum("12345", ref strDest);   运行查看结果 strTmp 为"12345",但是串 strDest 没有赋值。第二步实现函数返回串,但是在函数出口参数中没能进行输出。再次修改 C# 导入定义,将串b修改为引用(ref):

  public class RefComm   {   [DllImport("LibEncrypt.dll",    EntryPoint=" mySum ",    CharSet=CharSet.Ansi,CallingConvention=CallingConvention.StdCall)]    public static extern string mySum (string a, ref string b);   }

  运行时调用失败,不能继续执行。   第三步,修改动态链接库实现,将b修改为双重指针:   LIBEXPORT_API char *mySum(char *a,char **b){sprintf((*b),"%s",a); return *b;}   C#导入定义:

  public class RefComm   {   [DllImport("LibEncrypt.dll",    EntryPoint=" mySum ",    CharSet=CharSet.Ansi,CallingConvention=CallingConvention.StdCall)]    public static extern string mySum (string a, ref string b);   }

  在C#中调用测试:   string strDest="";   string strTmp= RefComm. mySum("12345", ref strDest);   运行查看结果 strTmp 和 strDest 均为"12345",调用正确。第三步实现了函数出口参数正确输出结果。
键盘也能翻页,试试“← →”键

关注我们

最新资讯离线随时看 聊天吐槽赢奖品