笔记:用标准c写 com dll

在 [XXX.idl] 中


1. 如果想在脚本语言中传递一个值,并且在dll(c代码)中修改这个值并返回的话,

这个参数必须写为:[in, out] VARIANT*

如果写成 [in, out] int* 或 [in, out] int** 都不行!

 

 


在 [c 代码] 中

1. 如果想让一个函数返回一个比如 BOOL 类型, 首先需要在 [XXX.idl] 中,

最后一个参数指定为: [out, retval] BOOL*

在 c 代码的函数中,最后一个参数指定为: BOOL *x

然后在函数里设置返回值 *x = TRUE | FALSE;

最后再 return NOERROR。

特别注意, 函数申明位置的返回值,例如: HRESULT 并不是在脚本语言中调用函数时的返回值。

同时, 每一个函数只能有一个 [out, retval], 并且要写在最后。


2. 关于函数申明时的返回值: HRESULT

可选项有:

// NOERROR - 没有错误, 表示函数本身执行过程中没遇到什么问题
// E_POINTER - 在脚本语言中会提示错误, 错误信息: 无效指针
// E_OUTOFMEMORY - 在脚本语言中会提示错误, 错误信息: 内存不够

 

3. 每新增一个用户函数, 需要同时在 3 个地方修改内容:

1) static const XXXVtbl PictureAPI_Vtbl = {..... 新的函数名};

2) DECLARE_INTERFACE_ (INTERFACE, IDispatch) {

STDMETHOD (新的函数名)(THIS_ const int, const int, BOOL*) PURE;

3) 在 XXX.idl 中添加新的函数说明。

 

posted @ 2015-09-01 18:12  personnel  阅读(204)  评论(0编辑  收藏  举报
友情链接:图片批量处理工具 gif动态图制作工具 制作电子相册 图片排版工具 制作淘宝主图视频 MKScript 鼠标键盘自动化脚本语言