当前位置:编程学习 > C#/ASP.NET >>

c#调用dll问题

各位大虾,小弟现在要用c#调用c++封装的dll,

VC源码:

typedef char (_stdcall *FENWEICARRECOG) (unsigned char *ImBuf, int nr, int nc, int *nResult, LPRRecogRlt fwOcrRlt[5], int CarIndex);

其中有个结构体:
struct LPRRecogRlt 
{
int ChLen;
char Code[12];
int  Score[12];
int Type;
int Color;
int XLeft;
int XRight;
int YTop;
int YBottom;
};

请问在C#调用该如何调用? --------------------编程问答--------------------
struct LPRRecogRlt
{
int ChLen;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 12)]
char[] Code;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 12)]
int[] Score;
int Type;
int Color;
int XLeft;
int XRight;
int YTop;
int YBottom;
}; 


这应该是个回调函数吧?
char (_stdcall *FENWEICARRECOG) (unsigned char *ImBuf, int nr, int nc, int *nResult, LPRRecogRlt fwOcrRlt[5], int CarIndex);

不管是不是,需要使用委托
public delegate char(IntPtr ImBuf,int nr,int nc,ref int nResult,[MarshalAs(UnmanagedType.LPArray,SizeConst=5)] LPRRecogRlt[] fwOcrRlt,int CarIndex)



--------------------编程问答-------------------- 不是回调函数的,直接调用dll里面的函数 --------------------编程问答-------------------- 既然是DLL那你可以直接添加引用不就可以了吗,
然后在程序中添加
Using XXX
这样可以吗? --------------------编程问答-------------------- 对啊 using... --------------------编程问答-------------------- 直接调用封装好的dll好像不需要那么复杂吧

你在C#的工程中,直接进行Add这个dll,然后就可以使用 --------------------编程问答-------------------- 得用platform invocation.看一下这个。
http://msdn.microsoft.com/en-us/library/aa288468.aspx
非com不托管的dll不可以直接引用。不信你可以架线引用试一试。
要么你就把它包装成com的,如果你不是很懂com,用atl比较方便。 --------------------编程问答-------------------- [DLLImport(“DLL文件”)]

修饰符 extern 返回变量类型 方法名称 (参数列表)  //dll中函数的声明

...//这里就可以用了
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,