求稳vb调用vc写的dll里面的LPCTSTR该怎么处理
int __stdcall JPR_ConnectDVR(int nHandleClient,LPCTSTR szUserName, LPCTSTR szPwd);声明成vb的函数该什么弄呢,
我把lpctsrt 写成 string 似乎是不行的。函数出错了。,
请问该怎么写呢。另外 调用时 如何调用呢,哪位指点下,太谢谢了!!!!
Public Declare Function JPR_ConnectDVR(ByVal nHandleClient As Long, ByVal szUserName As String, ByVal szPwdAs String) As Long
调用的时候:
JPR_ConnectDVR 123,"zhangsan","444"
好像不行啊,我声明成这样。
Public Declare Function JPR_ConnectDVR Lib "JP_DVRCtrl.dll" (ByVal nHandleClient As Long, ByVal szUserName As String, ByVal szPwd As String) As Long
然后按照你说方法调用
IntConDVRState = JPR_ConnectDVR(nHandleClient, "admin", "0000")
程序直接返回一个发生内部错误的标志,似乎不行啊。程序直接返回一个内部错误的标识,是不是LPCTSTR不能作为string处理呢。 我搜索论坛有人说不能当string处理,但是解决方法说得很含糊我没看懂,有人能解答一下嘛? http://topic.csdn.net/t/20020104/09/456979.html
这个帖子? LPCTSTR类型
L表示long指针
P表示这是一个指针
C表示是一个常量
T表示在Win32环境中, 有一个_T宏
这个宏用来表示你的字符是否使用UNICODE, 如果你的程序定义了UNICODE或者其他相关的宏,那么这个字符或者字符串将被作为UNICODE字符串,否则就是标准的ANSI字符串。
呵呵,您好,我看了这2个帖子
http://topic.csdn.net/t/20020104/09/456979.html
http://topic.csdn.net/u/20100315/16/cd542701-85f4-4bea-aa67-16777bada966.html
好像众口不一啊。具体怎么样我还不太清楚哦。能否详细的的分析下,
另外我都不知道究竟是我调用的有错误,还是这个dll有问题呢。。哎。
貌似StrConv(xxxxxx, vbUnicode)是对的 改为 Public Declare Function JPR_ConnectDVR Lib "JP_DVRCtrl.dll" (ByVal nHandleClient As Long, ByVal szUserName As Long, _
ByVal szPwd As Long) As Long
无论是用
IntConDVRState = JPR_ConnectDVR(nHandleClient, StrPtr("admin"), StrPtr("0000"))
还是用这个
IntConDVRState = JPR_ConnectDVR(nHandleClient, StrConv(StrPtr("admin"),vbUnicode), StrConv(StrPtr("0000"),vbUnicode))
都以返回内部错误告终。郁闷。。
究竟是怎么样的呢。
第一个网址里面Sander的方法我没搞清楚。
请问他说的那个byte如何初始化啊?后面说的那个szContainer=StrConv(ptrszContainer, vbUnicode)又是什么意思?
补充:VB , API