DLL中说明的函数原形如下:
IDENDLL int Scan(PHOTO *po)
IDENDLL int GetStatus(BOOL& CStatus,BOOL& SStatus)客户给了个用C++ BUILDER 调用此DLL的例子,如下:
typedef struct Card
{
CHAR szText[10][64];
RECT_S idRect[10]; //RECT_S是一个结构。
} CARD_S;
typedef struct
{
void *IInfo;
int ISize;
unsigned char* IPhoto;
int PSize;
} PHOTO;Long Size //Size的值经过计算得出。
PHOTO po;
CARD_S CInfo;
unsigned char* PhotoBuffer;
PhotoBuffer = new unsigned char [Size];
po.IInfo = (char*)&CInfo;
po.ISize=800;
po.IPhoto = PhotoBuffer;
po.PSize = Size;
Scan(&po);BOOL CState,SState;
GetStatus(CState, SState);我现在想在C#中调用这两个函数,但传的参数总不正确,请大家帮忙看看好吗?谢谢了!
IDENDLL int Scan(PHOTO *po)
IDENDLL int GetStatus(BOOL& CStatus,BOOL& SStatus)客户给了个用C++ BUILDER 调用此DLL的例子,如下:
typedef struct Card
{
CHAR szText[10][64];
RECT_S idRect[10]; //RECT_S是一个结构。
} CARD_S;
typedef struct
{
void *IInfo;
int ISize;
unsigned char* IPhoto;
int PSize;
} PHOTO;Long Size //Size的值经过计算得出。
PHOTO po;
CARD_S CInfo;
unsigned char* PhotoBuffer;
PhotoBuffer = new unsigned char [Size];
po.IInfo = (char*)&CInfo;
po.ISize=800;
po.IPhoto = PhotoBuffer;
po.PSize = Size;
Scan(&po);BOOL CState,SState;
GetStatus(CState, SState);我现在想在C#中调用这两个函数,但传的参数总不正确,请大家帮忙看看好吗?谢谢了!
解决方案 »
- 将图片读取到数据库,在显示出来,下面总是提示 Bitmap bmpt = new Bitmap(ms);有错误
- 16进制转ASCII问题
- 问两个关于DataSet的问题:字段局部唯一性和局部自动编号???
- vs2005的调试问题
- e1的内容为 "对于不返回任何键列信息的 SelectCommand 不支持 UpdateCommand 的动态 SQL 生成。"是什么意思
- 为什么用VS2005 sql server项目开发的存储过程被锁
- Winform 在自己的程序中用WebBrowser显示Word文档,能否不提示下载提示窗口?
- new 和 static
- 求助 关于C#多线程调用c++dll
- 请问,如何看本机器安装的.net framework的版本号啊?
- .net中用DAO操作DBF?急
- .net有那些日期工具类
在定义CARD_S这个struct的时候,加上
[StructLayout(LayoutKind.Sequential)]
标示。CHAR szText[10][64];:
[MarshalAs(UnmanagedType.ByValArray, SizeConst=640)]byte[] szText;你需要显示定义出RECT_S这个struct,然后用如上类似的方法去定义。至于
photo这个struct要稍微容易一些
可以如下:
public struct Photo
{
IntPtr IInfo;
int ISize;//Or Int16
[MarshalAs(UnmanagedType.LPTStr)]
string IPhoto;
int PSize; //or Int16
}