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文件;
注意,如果之前已经添加,需要重新添加,以更新;
添加引用的顺序:
-
删除之前的引用;
-
VS-生成-清理解决方案;
-
添加引用,选择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.点击确认后等待出现提醒注销成功即可。
…
Original: https://www.cnblogs.com/zhangdezhang/p/16699193.html
Author: 张德长
Title: COM组件中 添加导出函数的方法
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/611272/
转载文章受原作者版权保护。转载请注明原作者出处!