COM组件中 添加导出函数的方法

COM组件中 添加导出函数的方法

0准备

类前缀

define ATL_NO_VTABLE __declspec(novtable)

函数前缀

define STDMETHODIMP HRESULT STDMETHODCALLTYPE

define STDMETHODCALLTYPE __stdcall

class ATL_NO_VTABLE CDwgOPFun :

STDMETHODIMP CDwgOPFun::tesst(BSTR aaa, LONG* rr)

1添加

输入方法名,选择参数特性;

in表示输入参数;

out表示输出参数;

retval表示返回值;

in、out都可单独使用;

retval不可单独使用,必须和out一起使用,out retval必须放在最后一个;

out参数必须是指针类型,非指针类型不可以作为out参数;

返回值Hresult表示函数执行结果(是否成功),并不是真正的返回值;

2实现

STDMETHOD(test)(BSTR aaa, LONG* rr);

STDMETHODIMP CDwgOPFun::test(BSTR aaa, LONG* rr)

{ // TODO: 在此添加实现代码 *rr = 1; return S_OK;}

函数添加后,就会在cpp文件和h文件中出现该函数;

在cpp文件中实现该函数即可;

3引用

调用程序中添加引用

注意,要添加ocx文件,而不是dll文件;

注意,如果之前已经添加,需要重新添加,以更新;

添加引用的顺序:

  1. 删除之前的引用;

  2. VS-生成-清理解决方案;

  3. 添加引用,选择ocx文件;

Error:未能添加对OCX的引用,请确保此文件可访问并且是一个有效的程序集或COM组件;

解决:cmd命令窗口中进行注册,输入

regsvr32 c:\dsoframer.ocx回车即可;

注册完成后再添加就不会报错了;

4调用

class ATL_NO_VTABLE CDwgOPFun :

DwgOPLib.DwgOPFun dwgFun = new DwgOPLib.DwgOPFun();

long lErrCode = dwgFun.ExportPdfSimple3(textBox1.Text, textBox3.Text, 0);

首先用引用名.类名,实例化一个类;

用类实例.函数名进行函数调用;

输入所需参数;

返回值为设置属性out retval的值;

添加调试启动项目,项目属性→配置属性→调试→命令→添加启动程序(路径信息),再次调试程序时,就会先启动该程序,在这个程序环境中进而启动本程序,然后进行调试;

这种调试方法适用于被调用程序的调式,无法自行运行的com组件(ocx)或者程序集的调试(dll);

OCX文件 是对象类别扩充组件(Object Linking and Embedding (OLE) Control Extension);是可执行的文件的一种,但不可直接被执行; 是 ocx 控件的扩展名,与 .exe、.dll 同属于PE文件。

PE文件的全称是Portable Executable,意为可移植的可执行的文件,常见的EXE、DLL、OCX、SYS、COM都是PE文件,PE文件是微软Windows操作系统上的程序文件(可能是间接被执行,如DLL)

ocx引用方式:

(1)cmd命令注册组件,regsvr32 c:\dsoframer.ocx

(2)vs重新添加dsoframer.ocx..

ocx的注册

ocx的注销

1.进入开始,点击运行,或者win+R 输入cmd回车。

2.在出现的框中键入regsvr32 C:\xxxx.ocx 。(XXXX为控件名, C:\为目录))(regsvr32 E:\控件的制作\myOcxTest\Debug\myOcxTest.ocx)

3.点击确认后等待出现提醒注册成功即可。

oca 文件

Oca文件不是控件,其中保存Ocx控件的属性

1.进入开始,点击运行。

2.在出现的框中键入regsvr32 /u C:\xxxx.ocx 。(XXXX为控件名, C:\为目录)(regsvr32 /u E:\控件的制作\myOcxTest\Debug\myOcxTest.ocx)

3.点击确认后等待出现提醒注销成功即可。

COM组件中 添加导出函数的方法

Original: https://www.cnblogs.com/zhangdezhang/p/16699193.html
Author: 张德长
Title: COM组件中 添加导出函数的方法

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/611272/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • LVS负载均衡

    LVS负载均衡 LVS负载均衡 一、LVS是什么 二、LVS的作用 三、lvs的三种工作模式 1.基于NAT的LVS模式负载均衡 2.基于TUN模式的LVS负载均衡 3.LVS(D…

    数据库 2023年6月14日
    070
  • Linux 服务管理

    Linux 服务管理 1. 基本介绍 服务的本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其它程序的请求,比如mysqld,sshd,防火墙等,因此我们又称为守护线程…

    数据库 2023年6月6日
    099
  • mysql进阶

    mysql进阶 1.下载二进制格式的mysql软件包 [root@mr ~]# wget https://downloads.mysql.com/archives/get/p/23…

    数据库 2023年5月24日
    0129
  • [VSCode] Todo Tree VSCode插件 待办事项树

    Todo Tree 一款待办事项插件 我们写程序的时候,难免会遇到一些情况需要标记或者搁置,在写代码的时候会用一些特殊的注释来表示不同的内容,使我们可以快速的定位我们注释的位置。 …

    数据库 2023年6月9日
    086
  • 1001-MySQL学习-第一节自习课

    MySQL学习(第一节自习课) 一. 软件下载、安装 下载地址:https://dev.mysql.com/downloads/installer/ 位置:mysql->in…

    数据库 2023年5月24日
    0100
  • chrome架构发展与提供的性能分析工具

    谷歌早期多进程架构分为插件进程(Plugin Process)、渲染进程(Render Process)、浏览器主进程(Browser Process) 插件进程负责插件的运行,通…

    数据库 2023年6月6日
    0321
  • 创建一个属于自己的linux系统Docker镜像之旅-简单模式

    在创建容器之前首先要把该开启的服务都启动 1.CentOS的虚拟机/服务器 2.Docker 服务开启 systemctl start docker 文件的创建,可以在root下直…

    数据库 2023年6月6日
    083
  • 电脑卡.磁盘占用100% .解惑找不到Superfetch等服务问题

    公司电脑没有固态。磁盘io比较慢. 经常打满100% *1. 打开任务管理器发现是 一个叫system和DCFWinService的服务一直在占用磁盘读写 2. 解决方向. 禁用掉…

    数据库 2023年6月14日
    0685
  • VSCode 常用插件

    自定义相关 语言包、主题、快捷键等 plugins description Chinese 中文简体语言包 Material Theme Google Material 主题(附带…

    数据库 2023年6月6日
    097
  • 详解apollo的设计与使用

    apollo 是一款由携程团队开发的配置中心,可以实现配置的集中管理、分环境管理、即时生效等等。在这篇博客中,我们可以了解到: 这里我回答的是为什么使用配置中心,而不是为什么使用 …

    数据库 2023年6月6日
    099
  • jmeter-操作mysql

    1. 环境:jmeter5.3,mysql5.7。 提取码:ZHEN 3. 操作 ①. 测试计划内导入jdbcjar包 ②. jmeter内添加👉线程组,点击”添加→配…

    数据库 2023年6月14日
    085
  • 记一次故障系列:docker 启动失败

    启动报错: csharp;gutter:true; ]# systemctl start docker Job for docker.service failed because …

    数据库 2023年6月9日
    076
  • 记录下在阿里云linux上安装与配置Mysql

    环境:阿里云ECS服务器,系统为centos7.2 用户:root 参考博客: https://blog.csdn.net/kunzai6/article/details/8193…

    数据库 2023年6月16日
    0114
  • loadrunner 无法保存许可信息

    1.CONFUGURATION—>loadrunner license—>New License页面,输入许可信息,提示:无法保存许可信息 2.解决方法,使用管理员角色…

    数据库 2023年6月14日
    0104
  • 工具 | 如何对 MySQL 进行 TPC-C 测试?

    作者:丁源 RadonDB 测试负责人负责 RadonDB 云数据库、容器化数据库的质量性能测试,迭代验证。对包括云数据库以及容器化数据库性能和高可用方案有深入研究。 |背景 根据…

    数据库 2023年5月24日
    094
  • mysql笔记

    DBMS:数据库管理系统SQL:用于访问和处理数据库的标准的计算机语言DB:数据库 三者的关系: DBMS数据库管理系统执行SQL语句,来操作DB数据库当中的数据的 条件查询 in…

    数据库 2023年5月24日
    078
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球