各位大神帮下忙,为什么我得到的是指针而不是值?

mylovetiantian 2012-02-14 11:19:19

STDMETHODIMP Cgkztrw::PinReportPressed(char* cpKey,SHORT timeOut,BSTR* pwd,SHORT* val)
{
// TODO: 在此添加实现代码
HINSTANCE hDLL;//dll句柄
//HANDLE hCom;//串口句柄
pinReportPressed _rpwd;//声明函数指针
hDLL=LoadLibrary(L"ZT_EPP_API.dll");
ofstream fout;
fout.open("c:\\test.log",ios::app);
if(hDLL==NULL){
FreeLibrary(hDLL);
}else{
_rpwd=(pinReportPressed)GetProcAddress(hDLL,"ZT_EPP_PinReportPressed");
if(_rpwd!=NULL){
_rpwd(cpKey,timeOut);
fout<<"返回值的结果为:"<<*val<<".........password value..........."<<cpKey<<endl;
CComBSTR passwd=_com_util::ConvertStringToBSTR(cpKey);
pwd=&passwd;
fout<<"BSTR*的结果为:"<<pwd<<endl;
return S_OK;
}else{
fout<<"PinReportPressed函数指针为空!"<<endl;
}
}
return S_OK;
}

我的这段函数代码中,pwd的结果为什么是一个指针,而不是值?求各位大神帮帮忙解答下,谢谢了!
...全文
218 16 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
mylovetiantian 2012-02-14
  • 打赏
  • 举报
回复
主要是我网页中要调用的,所以要显示这个BSTR* pwd的值此时我该如何改呢,还请明示多谢了!
shentujun 2012-02-14
  • 打赏
  • 举报
回复
BSTR* 是二级指针
mylovetiantian 2012-02-14
  • 打赏
  • 举报
回复
我改成SHORT类型的值后,结果可以正常输出,但是JS还是无法识别,undefined?为何?
mylovetiantian 2012-02-14
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 sl51314240 的回复:]

如果是JS,那肯定得到的是指针啊,pwd会根据你的函数参数类型自动转换的
[/Quote]
如果要得到值,该怎么做呢,还请明示下,现在有点急,多谢了!
mylovetiantian 2012-02-14
  • 打赏
  • 举报
回复
如果这样,我怎么才可以得到值呢,大哥帮忙下, 有点着急!
sl51314240 2012-02-14
  • 打赏
  • 举报
回复
如果是JS,那肯定得到的是指针啊,pwd会根据你的函数参数类型自动转换的
mylovetiantian 2012-02-14
  • 打赏
  • 举报
回复
function PinReportPressed() {
var temp, val,pwd;
for(j=0;j<16;j++){
val = gkztrw.PinReportPressed(cpKey, 10000, pwd);
alert(temp + ".......temp" + val + "......." + pwd);
}
}

这个是我的JS函数调用的代码
mylovetiantian 2012-02-14
  • 打赏
  • 举报
回复
[id(4)] HRESULT PinReportPressed( [out] CHAR* cpKey,SHORT timeOut,[out] BSTR* pwd,[out,retval] SHORT* val);
这个事函数的声明;
mylovetiantian 2012-02-14
  • 打赏
  • 举报
回复
参数是在js中传递的!
sl51314240 2012-02-14
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 mylovetiantian 的回复:]

CComBSTR passwd=_com_util::ConvertStringToBSTR(cpKey);
*pwd=passwd;
fout<<"BSTR*的结果为:"<<*pwd<<endl;
就是这样的,passwd是一个CComBSRT的值,pwd是一个[out] BSTR* pwd类型的指针,现在我需要把输出*pwd的值,可是还是输出的指针,而不是值,可以加我QQ详聊下吗!
……
[/Quote]

你怎么调那个函数的?
参数怎么传的?
BSTR pwd;
PinReportPressed(..&pwd..)才行啊,你参数别是穿的指针
mylovetiantian 2012-02-14
  • 打赏
  • 举报
回复
QQ1402389038
mylovetiantian 2012-02-14
  • 打赏
  • 举报
回复
CComBSTR passwd=_com_util::ConvertStringToBSTR(cpKey);
*pwd=passwd;
fout<<"BSTR*的结果为:"<<*pwd<<endl;
就是这样的,passwd是一个CComBSRT的值,pwd是一个[out] BSTR* pwd类型的指针,现在我需要把输出*pwd的值,可是还是输出的指针,而不是值,可以加我QQ详聊下吗!
sl51314240 2012-02-14
  • 打赏
  • 举报
回复
1.代码风格太糟糕,看不清
2.不知道你在说啥,代码不完整
程序员小迷 2012-02-14
  • 打赏
  • 举报
回复
pwd=&passwd;
不明显是指针么?问题的关键应该是: 是一级指针还是二级指针等等?和值有什么关系
mylovetiantian 2012-02-14
  • 打赏
  • 举报
回复
这样输出是没有用的,因为我要返回值,js调用,需要这个值的,现在的问题是如果单纯转换是没有问题的,可是当我传值的时候就是有问题的!
passwd是可以正常输出值的,但是当我第二次引用的时候就是指针了,所以我不知道该如何改才可以得到值,而不是地址,在返回的时候!
Occam's_Razor 2012-02-14
  • 打赏
  • 举报
回复
这样试试
fout<<"BSTR*的结果为:"<<(BSTR)passwd<<endl;

编译不过就这样

fout<<"BSTR*的结果为:"<<(WCHAR *)(BSTR)passwd<<endl;

65,187

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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