当前位置:编程学习 > VB >>

求稳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
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,