C# 调用非托管dll? 50

有一个DLL中的函数原型是intgetInfo(char*a1,char*a2,WORD*a3,inta4),其中a2,a3能传回值。在C#中用DllImport调用,如... 有一个DLL 中的函数原型是 int getInfo(char * a1,char * a2,WORD * a3,int a4),其中a2,a3能传回值。在C#中用DllImport调用,如何定义函数?关键就是数据类型如何对应?
我这样写,报错“外部组件发生异常”
[DllImport("my.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
public extern static int getInfo(string a1, StringBuilder a2, ref ushort a3, int a4);

private void test()
{
string f1= "D:\\25760.jpg";
StringBuilder f2=new StringBuilder (10);
ushort f3 = 0;
int result=getInfo(f1,f2,ref f3,9);
}
///////////////////////////////////////////////////////////////
我找到原因了,CharSet = CharSet.Ansi 就行了,那个DLL用的是多字节字符集。
希望这个帖子,对新手有帮助,呵呵。
展开
 我来答
夜色华丽
2011-10-09 · TA获得超过664个赞
知道小有建树答主
回答量:800
采纳率:0%
帮助的人:405万
展开全部
int getInfo(intptr a1,intptr a2,intptr a3,int a4)
最方便的就是这了。。。
弄回来值之后再用内存拷贝
更多追问追答
追问
仍然报错呀
追答
把你的错误信息全部发上来看看
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式