ATL做COM参数返回值问题

ATL做的函数COM想给ASP用,其他都成功,但是就有一个问题是想用参数返回值,比如asp中add(1,2,a)将1+2的和给a,在vc中我给第1,2个参数long值,前... ATL做的函数COM想给ASP用,其他都成功,但是就有一个问题是想用参数返回值,比如asp中
add(1,2,a)
将1+2的和给a,
在vc中我给第1,2个参数long值,前面有关键字[in],而给a的是long*,关键字[out],为什么总是出错:类型不正确呢?
谢谢了!
展开
 我来答
aamvft
2011-03-10
知道答主
回答量:30
采纳率:0%
帮助的人:0
展开全部
lt = NULL;
hr = pGuidanceAddress->LogAddressData(xxx, &AddressResult);
// do something
SysFreeString(AddressResult);

服务端分配代码:
*AddressResult = SysAllocString(L"test");
return S_OK;

如果是进程外组件,分配和释放的操作各自执行了两次,步骤如下:
1、存根接口调用组件接口方法,服务器组件分配BSTR
2、存根接口把BSTR列集传递给客户端的代理接口后释放该BSTR
3、代理接口在散列参数后再次调用SysAllocString分配BSTR,并从客户端的LogAddressData调用中返回
4、客户端使用完毕后调用SysFreeString释放BSTR
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Yeshirow
2011-03-18 · TA获得超过340个赞
知道小有建树答主
回答量:74
采纳率:0%
帮助的人:139万
展开全部
用 [out] VARIANT *a
(给 ASP 调用实际上是给 Jscript 或者 VBScript 等脚本调用, 因此 VARIANT 类型是首选).
更多追问追答
追问
谢谢,VARIANT怎么转换为字符串或者数值呢?
追答
奇怪 在使用 ATL 写 COM 时不知道 VARIANT?
这是另一个问题了. 要从 VARIANT 的定义说起了.
一些有用的, 操作VARIANT 的 API 函数是 Var 开关的函数.
另外 在 _comutil (好像是) 有封装了 VARIANT 的 _variant 类别.
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式