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#