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

C#调用C++Dll封装时遇到的小问题

2012年04月29日 ⁄ 综合 ⁄ 共 738字 ⁄ 字号 评论关闭

c++的一个dll,里面有个方法,无返回类型,一个输出参数(char*),两个输入参数。

调用时遇到点小问题,总结一下。

错误的调用1,直接崩溃

 [DllImport("UpgradeServerDll.dll")]
        public static extern void _Upgrade_GetPatchIniFile(out StringBuilder lpszFileName, int b, string c);

IniAction._Upgrade_GetPatchIniFile(out sb, 1024 * 1000 * 1000, Request["v"].ToString());

错误的调用2,无任何信息

 [DllImport("UpgradeServerDll.dll")]
        public static extern void _Upgrade_GetPatchIniFile([Out] string lpszFileName, int b, string c);
IniAction._Upgrade_GetPatchIniFile(mess, 1024 * 1000 * 1000, Request["v"].ToString());

正确调用:

 [DllImport("UpgradeServerDll.dll")]
        public static extern void _Upgrade_GetPatchIniFile([Out] StringBuilder lpszFileName, int b, string c);
 StringBuilder sb = new StringBuilder(1024*1024);
                    IniAction._Upgrade_GetPatchIniFile(sb, 1024 * 1024 , Request["v"].ToString());

 

抱歉!评论已关闭.