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

问题描述

[DllImport("HCNetSDK.dll")]publicstaticexternboolNET_DVR_CaptureJPEGPicture(intlUserID,intlChannel,NET_DVR_JPEGPARAlpJpegPara,stringsPicFileName);

在C#中,sPicFileName 图片路径这个参数如何设置呢?下面是我拼接的一个字符串,但是总是报错stringSavePicturePath=PicturePath+DateTime.Now.ToString("yyyy-MM-dd") +".jpeg";boolSaveJPEGPicture=CHNetSdk.NET_DVR_CaptureJPEGPicture(lUserID,DVRChannel,sNetDvrJpegPara,SavePicturePath);

总是报这个错误对PInvoke函数“CHNetSdk::NET_DVR_CaptureJPEGPicture”的调用导致堆栈不对称。原因可能是托管的PInvoke签名与非托管的目标签名不匹配。请检查PInvoke签名的调用约定和参数与非托管的目标签名是否匹配。

解决方案

解决方案二:
没人在吗??
解决方案三:
先调试路径把路径写死写成C盘下的成功了以后再拼路径
解决方案四:
恩,先调试路径把路径写死写成C盘下的成功了以后再拼路径
解决方案五:
引用2楼keinshen的回复:

先调试路径把路径写死写成C盘下的成功了以后再拼路径

char*pchPicturePath=CNHCommonAPI::UnicodeToANSI(wchPicturePath);charchFileName[MAX_PATH];ZeroMemory(chFileName,sizeof(chFileName));sprintf_s(chFileName,"%s\%s.jpeg",pchPicturePath,strTestRunningNumber.c_str());BOOLbCaptureJPEGPicture=NET_DVR_CaptureJPEGPicture(lUserID,atoi(DVRChannel.c_str()),&sNetDvrJpegPara,chFileName);

接口中的路径参数在C++里面是这样设置的,但是在C#里面我就不知道怎么设置它的文件名字跟路径。当中wchPicturePath是获取配置文件中的路径
解决方案六:
引用3楼wumukang的回复:

恩,先调试路径把路径写死写成C盘下的成功了以后再拼路径

char*pchPicturePath=CNHCommonAPI::UnicodeToANSI(wchPicturePath);charchFileName[MAX_PATH];ZeroMemory(chFileName,sizeof(chFileName));sprintf_s(chFileName,"%s\%s.jpeg",pchPicturePath,strTestRunningNumber.c_str());BOOLbCaptureJPEGPicture=NET_DVR_CaptureJPEGPicture(lUserID,atoi(DVRChannel.c_str()),&sNetDvrJpegPara,chFileName);

接口中的路径参数在C++里面是这样设置的,但是在C#里面我就不知道怎么设置它的文件名字跟路径。当中wchPicturePath是获取配置文件中的路径
解决方案七:
怎么没人了?
解决方案八:
楼主,强烈建议你将海康的SDK重新用C++封装一下再用C#调用,否是连接多通道时会死的很惨,封装的C++库里面进行业务划分,主要将相机与IP通道进行对应,而且往C#传值的时候尽量用简单的数据类型,比如:char*之类的,千万别用结构体,将不用的变量也不要往上传了,这样C#调用起来就会方便很多。我们自己也是这么做的
解决方案九:
可能是前面结构的问题,后面的字符串即使不对也很少出调用错误.

时间: 2024-09-27 22:18:07

海康威视 抓图函数 NET_DVR_CaptureJPEGPicture 路径参数的相关文章

c++- libevent http server 如何匹配并解析restful url里的路径参数

问题描述 libevent http server 如何匹配并解析restful url里的路径参数 比如查询一个用户的信息 我们输入url: http://xxxx.com/user/12345 这是目前流行的restful的标准 主流的java web框架,C++的cppcms web框架都支持解析出 http://xxxx.com/user/{userid} 这里面的userid输入参数 但高并发的C++ http服务框架里libevent http是很常用的,但我看参考文档里只有解析传统

SQL中函数 replace 的参数1的数据类型ntext无效的解决方法

今天将一个ACC的数据库转换成ms-sql以后发现在使用replace替换语句的时候出现: SQL中函数 replace 的参数 1 的数据类型 ntext 无效.找了半天找到了解决办法: 因为ntext需要转化下 用如下语句即可解决: 复制代码 代码如下:UPDATE 表 SET 字段=REPLACE(cast(字段 AS varchar(8000)),'被替换的内容','将要替换成的内容') varchar(8000)是字段类型.8000是个很猛的字段,可以根据自己的实际情况改动!

VC8/9中CRT函数对非法参数的处理

在VC8/9中,许多CRT函数会检查传入的参数的合法性.当CRT函数检测到一个非法参数传入时,它会调用"非法参数处理例程".默认的非法参数处理例程是调用Watson Crash Reporting,让应用程序崩溃,并询问用户是否愿意发送崩溃数据转储给Microsoft分析.在Debug模式下,非法参数还会产生失败的断言. 可以通过调用_set_invalid_parameter_handler来设置自定义处理例程,来代替默认的处理例程.如果你指定的处理例程没有终止程序,那么在该处理例程

JS中Date日期函数中的参数使用介绍

本文为大家详细介绍下JS中Date日期函数中的参数在实际使用中的介绍,感兴趣的朋友不要错过 要创建一个一个日期对象,可以使用以下的方式:   代码如下: var now=new Date()    当然,函数中没有传递任何参数,表示此对象now自动获取了当前的时间.    如果想要创建一个自定义时间的对象,则要对Date()进行参数的传递.而这个参数,必须是毫秒数(UTC时间1970年1月1日午夜起至自定义时间为止的毫秒数).    我们可以使用Date.parse()和Date.UTC()来获

cstring的remove函数中的参数如何设置为一个cstring的变量名

问题描述 cstring的remove函数中的参数如何设置为一个cstring的变量名 例如 CString a: CString b: 我想在a中找到与b相同的字符段,然后用remove删除b在a中 但是remove的参数用b这个变量名字表示:怎么弄.求指导

c语言-把数组中的元素 循环的作为函数中的参数 报错!

问题描述 把数组中的元素 循环的作为函数中的参数 报错! 把数组中的元素 循环的作为函数中的参数 怎么会报错 麻烦前辈帮忙看看 #include<stdio.h>int ShowNumber();int main (){ int number[10]; int i ; //循环变量 //随便为number数组赋值 for(i=0;i<10;i++)// i=0 1 2 3 4 5 6 7 8 9 { number[i]=i; } for(i=0;i<10;i++) { ShowNu

关于c++的中函数指针作为参数的问题

问题描述 关于c++的中函数指针作为参数的问题 函数实现 void swap(int &a, int &b) { int tmp = a; a = b; b = tmp; } 函数使用: int i=1,j=2: swap(i,j): 如上所示,swap函数传递进来的是两个整形变量的地址,有两个问题 1.那么swap的实现里面,为什么直接交换a,b的值就实现了地址交换?难道这里的a,b代表指针吗? 2.使用swap时为什么没有使用swap(&i,&j)? 初学c++,还望大

c linux sprintf-c sprintf函数第一个参数可以使动态数组吗?

问题描述 c sprintf函数第一个参数可以使动态数组吗? string str="1234.56"; char *ch = new char[str.length()+1]; double tude = atof(str.c_str()); sprintf(ch, "%.5f", tude); 这样格式化double的变量,在内存的读取上存在问题吗? 解决方案 会有问题 因数浮点数精度的问题,可能格式出来需要的空间比原始的字符串空间要大.所以,会出来内存访问越界

struct-新人求问,C#调用C++dll,C++函数中有NULL参数,我转换到C#该怎么改。。

问题描述 新人求问,C#调用C++dll,C++函数中有NULL参数,我转换到C#该怎么改.. 最近调用C++dll,各种问题,烦死了都要..求各位帮助..C++DEVICE_ID APICALL NSSTCreateDevice( NsstDevice* device AppProxy* proxy); 其中NsstDevice和 AppProxy是结构,调用时这样的:**DEVICE_ID id = NSSTCreateDevice(&deviceNULL);** 今天花了好大功夫转换了C#