vb.net调用C++生成的dll中的函数时的变量赋值问题

Chibi_chan 2011-07-14 04:23:52

typedef enum tagDS_FILE_TYPE
{
FILE_JPG = 1,
FILE_BMP = 2,
FILE_RAW = 4,
}DS_FILE_TYPE;

typedef enum tagDS_DATA_TYPE
{
DATA_TYPE_RAW = 0,
DATA_TYPE_RGB24 = 1,

}DS_DATA_TYPE;

/*==============================================================
函数: CameraCaptureToBuf
功能: 采集一帧图像数据到Buf,文件格式会根据FileType设定改变
参数: pBuffer 数据Buf指针
DataType 数据类型
返回值: 调用成功返回STATUS_OK 否则返回错误代码
--------------------------------------------------------------*/
DT_API DS_CAMERA_STATUS CameraCaptureToBuf(BYTE *pBuffer, IN DS_DATA_TYPE DataType);

/*==============================================================
函数: CameraCaptureFile
功能: 采集一帧图像到文件,文件格式会根据FileType设定改变
参数: strFileName 文件名(包括目录路径)
FileType 文件类型,具体参 FILE_TYPE 定义
返回值: 调用成功返回STATUS_OK 否则返回错误代码
--------------------------------------------------------------*/
DT_API DS_CAMERA_STATUS CameraCaptureFile(IN LPCTSTR strFileName, IN BYTE FileType);


这是C++中CameraCaptureToBuf和CameraCaptureFile两个函数的定义,那我在vb.net中应该如何调用呢?特别是那个指针变量,应该怎么赋值呀?求高手指教!
QQ:894642122
邮箱:894642122@qq.com
...全文
214 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Chibi_chan 2011-07-22
  • 打赏
  • 举报
回复
谢谢,我现在已经能够抓到图像并显示在picturebox里面了,但是问题是我要保存该图像时,报错说picturebox.image没有实例,这是怎么回事呀?
ilooknow 2011-07-19
  • 打赏
  • 举报
回复
Public Declare Sub CameraCaptureFile Lib "SDK.dll" (ByVal strFileName As String, ByVal fileType As Integer)
Public Declare Sub CameraCaptureToBuf Lib "SDK.dll" (ByRef pBuffer() As byte, ByVal DataType As Integer)

Public Sub DSCameraCaptureFile(ByVal strFileName As String, ByVal fileType As Integer)
CameraCaptureFile(strFileName, fileType)
End Sub

Public Sub DSCameraCaptureToBuf(ByRef pBuffer() As byte, ByVal DataType As Integer)
CameraCaptureToBuf(pBuffer, DataType)
End Sub


Chibi_chan 2011-07-19
  • 打赏
  • 举报
回复
有人在吗?求指教啊!!!

还有个问题,C++中有的函数调用时是取参数的地址,转换成vb.net的话要怎么办呀?
Chibi_chan 2011-07-14
  • 打赏
  • 举报
回复
flyerwing(80年代的内裤):
忘了说了,我在vb.net中的定义是这样的:
    Public Declare Sub CameraCaptureFile Lib "SDK.dll" (ByVal strFileName As String, ByVal fileType As Integer)
Public Declare Sub CameraCaptureToBuf Lib "SDK.dll" (ByRef pBuffer As UInteger, ByVal DataType As Integer)

Public Sub DSCameraCaptureFile(ByVal strFileName As String, ByVal fileType As Integer)
CameraCaptureFile(strFileName, fileType)
End Sub

Public Sub DSCameraCaptureToBuf(ByRef pBuffer As UInteger, ByVal DataType As Integer)
CameraCaptureToBuf(pBuffer, DataType)
End Sub

但是现在我不知道改如何调用?
对于DSCameraCaptureFile函数我的调用时这样的:
tmpfile = "C:\temp"
Camera.DSCameraCaptureFile(tmpfile, 2)
PictureBox1.ImageLocation = "c:\temp.bmp"
但是DSCameraCaptureToBuf函数我不会用,能教教我吗?
flyerwing 2011-07-14
  • 打赏
  • 举报
回复
public enum tagDS_FILE_TYPE {
FILE_JPG = 1,
FILE_BMP = 2,
FILE_RAW = 4,
}
public enum tagDS_DATA_TYPE {
DATA_TYPE_RAW = 0,
DATA_TYPE_RGB24 = 1,
}
public enum DS_CAMERA_STATUS {
DS_CAMERA_STATUS_OK = 0,
DS_CAMERA_STATUS_FAIL = 1,
}
[DllImportAttribute("", EntryPoint="CameraCaptureToBuf")]
public static extern DS_CAMERA_STATUS CameraCaptureToBuf(ref byte pBuffer, tagDS_DATA_TYPE DataType) ;
[DllImportAttribute("", EntryPoint="CameraCaptureFile")]
public static extern DS_CAMERA_STATUS CameraCaptureFile([InAttribute()] [MarshalAsAttribute(UnmanagedType.LPTStr)] string strFileName, byte FileType) ;

16,554

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧