zoukankan      html  css  js  c++  java
  • 笔记:用标准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 中添加新的函数说明。

  • 相关阅读:
    shell 脚本模板
    运动拉伸
    nature作图要求
    R语言画图曼哈顿图来源网络
    选择合适的统计图形和统计方法|图片来自松哥统计
    GO富集图
    batch gene expression plot
    植物生理生化研究进展
    手机图片
    jquery练习之超链接提示效果
  • 原文地址:https://www.cnblogs.com/personnel/p/4776491.html
Copyright © 2011-2022 走看看