海康威视 抓图函数 NET_DVR_CaptureJPEGPicture 路径参数

juniot 2012-03-21 11:39:04

[DllImport("HCNetSDK.dll")]
public static extern bool NET_DVR_CaptureJPEGPicture(int lUserID, int lChannel, NET_DVR_JPEGPARA lpJpegPara, string sPicFileName);


在C#中,sPicFileName 图片路径这个参数如何设置呢?

下面是我拼接的一个字符串,但是总是报错

string SavePicturePath = PicturePath + DateTime.Now.ToString("yyyy-MM-dd") + ".jpeg";
bool SaveJPEGPicture = CHNetSdk.NET_DVR_CaptureJPEGPicture(lUserID, DVRChannel, sNetDvrJpegPara, SavePicturePath);

总是报这个错误

对 PInvoke 函数“CHNetSdk::NET_DVR_CaptureJPEGPicture”的调用导致堆栈不对称。原因可能是托管的 PInvoke 签名与非托管的目标签名不匹配。请检查 PInvoke 签名的调用约定和参数与非托管的目标签名是否匹配。
...全文
4308 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
只在此山中 2012-03-23
  • 打赏
  • 举报
回复
可能是前面结构的问题,后面的字符串即使不对也很少出调用错误.
longe329 2012-03-22
  • 打赏
  • 举报
回复
楼主,强烈建议你将海康的SDK重新用C++封装一下再用C#调用,否是连接多通道时会死的很惨,封装的C++库里面进行业务划分,主要将相机与IP通道进行对应,而且往C#传值的时候尽量用简单的数据类型,比如:char *之类的,千万别用结构体,将不用的变量也不要往上传了,这样C#调用起来就会方便很多。

我们自己也是这么做的
wumukang 2012-03-21
  • 打赏
  • 举报
回复
恩,先调试路径 把路径写死 写成C盘下的 成功了以后再拼路径
二当家 2012-03-21
  • 打赏
  • 举报
回复
先调试路径 把路径写死 写成C盘下的 成功了以后再拼路径
juniot 2012-03-21
  • 打赏
  • 举报
回复
没人在吗??
juniot 2012-03-21
  • 打赏
  • 举报
回复
怎么没人了?
juniot 2012-03-21
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wumukang 的回复:]
恩,先调试路径 把路径写死 写成C盘下的 成功了以后再拼路径
[/Quote]


char* pchPicturePath = CNHCommonAPI::UnicodeToANSI(wchPicturePath);

char chFileName[MAX_PATH];

ZeroMemory(chFileName, sizeof(chFileName));

sprintf_s(chFileName, "%s\\%s.jpeg", pchPicturePath, strTestRunningNumber.c_str());

BOOL bCaptureJPEGPicture = NET_DVR_CaptureJPEGPicture(lUserID, atoi(DVRChannel.c_str()), &sNetDvrJpegPara, chFileName);


接口中的路径参数在C++里面是这样设置的,但是在C#里面我就不知道怎么设置它的文件名字跟路径。
当中wchPicturePath是获取配置文件中的路径

juniot 2012-03-21
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 keinshen 的回复:]
先调试路径 把路径写死 写成C盘下的 成功了以后再拼路径
[/Quote]


char* pchPicturePath = CNHCommonAPI::UnicodeToANSI(wchPicturePath);

char chFileName[MAX_PATH];

ZeroMemory(chFileName, sizeof(chFileName));

sprintf_s(chFileName, "%s\\%s.jpeg", pchPicturePath, strTestRunningNumber.c_str());

BOOL bCaptureJPEGPicture = NET_DVR_CaptureJPEGPicture(lUserID, atoi(DVRChannel.c_str()), &sNetDvrJpegPara, chFileName);


接口中的路径参数在C++里面是这样设置的,但是在C#里面我就不知道怎么设置它的文件名字跟路径。
当中wchPicturePath是获取配置文件中的路径

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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