在VC程序中调用服务组件

VC编写COM组件提供PHP调用 最近项目需要PHP来解析二进制数据,如果直接PHP做比较麻烦,就想到VC编写COM组件来做,提供PHP调用。文章将介绍VC编写COM组件提供PHP调用,实现一个计算两个数字相加的功能。 阅读详情
                                                            在VC程序中调用服务组件
1、运行VC 6.0,使用MFC程序向导创建一个新的基于对话框的MFC应用程序。

2、使用#import导入服务组件,拷贝PRJADO.DLL到VC工程目录,打开STDAFX.H文件增加如下代码:

# import "prjado.dll"

using namespace prjado;

这段代码应该放置在:

//{{AFX_INSERT_LOCATION}}

// Microsoft Visual C++ will insert additional declarations immediately 之后和#endif 之前。

在stdafx.h文件导入dll能够让编译器在运行时连接dll的类型库,#import它能够自动产生一个对GUIDs的定义,同时自动生成对clsado对象的封装。同时能够列举它在类中所能找到的类型, VC++会在编译的时候自动生成两个文件:

一个头文件(.tlh),它包含了列举的类型和对类型库中对象的定义;

一个实现文件(.tli)对类型库对象模型中的方法产生封装。

Namespace(名字空间)用来定义一个名字空间,使用unsing就可以将当前的类型上下文转换名字空间所定地,让我们可以访问服务组件的方法。

如果我们修改了服务组件程序,建议删除这两个文件后重新完整编译工程,以便让编译器重新列举类的属性以及函数。

3、在对话框中新添加一按钮,标题设为“测试”。双击“测试”按钮,系统提示新建一函数OnButton1对应于该按钮的CLICK事件。OnButton1函数的具体代码如下

HRESULT hresult;

CLSID clsid;

CoInitialize(NULL);

//初始化COM接口

hresult=CLSIDFromProgID(OLESTR("prjado.clsado"), &clsid);

//得到组件的CLSID

_clsado *t;

//这就是我们在PRJADO.DLL中定义的类

hresult=CoCreateInstance(clsid,NULL,CLSCTX_INPROC_SERVER,__uuidof(_clsado),(LPVOID *) &t);

初始化CLSADO,CoCreateInstance()的第一个参数是对象的CLSID(类代码),这个128位的编码唯一地标识了组件服务,它的路径和运行参数等信息都放在系统注册表中;第二个参数一般情况下设为NULL;第三个参数用来指明对象的运行环境,如远程或本地,此处设为CLSCTX_INPROC_SERVER,标明是服务组件是一个DLL;第四个参数指明用来与对象通信接口的ID,这也是一个128位的编码;第五个参数是用来接收对象的接口指针。

if(FAILED(hresult))

{

AfxMessageBox("初始化服务组件失败");

return;

}

//如果初始化失败,弹出提示对话框后退出程序

t->ado_Init() ;

//调用初始化函数

t->ado_add("从VC调用组件") ;

//调用增加记录函数

t->ado_UnInit ();

//调用关闭连接函数

t->Release();

//释放接口指针

CoUninitialize();

// 关闭COM库的联接

AfxMessageBox("调用服务组件完成");

保存工程后编译运行VC 程序,点击“测试”按钮,等待完成提示后,我们打开数据库就可以看到刚才添加的记录了。
VC6创建COM组件,Qt调用例子 一、建立 ATL 工程   步骤2.1:建立一个工作区(WorkSpace)。   步骤2.2:在工作区中,建立一个 ATL 工程(Project)。示例程序叫 June12,并选择DLL方式,见图一。 图一、建立 ATL DLL 工程   Dynamic Link Library(DLL) 表示建立一个 DLL 的组件程序。   Executable(EXE) 阅读详情

相关推荐

vc中调用Flex的总结

之所以叫总结,是因为看了很多前人的资料,很多都是别人已经做过的。(既然走在了别人后面,就不要为走重复的路而感到羞耻。)但那些总归是别人的知识,我还是简单叙述一下自己的过程吧。编程环境:VC6.0     FLEX3.2    FLASH_PLAYER_10_ACTIVE_X.EXE额外使用工具:TinyXML(可不使用)1.编写Flex

jwcoffee的专栏 2914

#import 无法打开源文件msado.tlh

#import 无法打开源文件msado.tlh #import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename("EOF","adoEOF") 改成: #import "c:\\program files\\common files\\system\\ado\\msado15....

weixin_30586085的博客 5332

vc程序调用别人的dll报错的原因分析

vc程序调用别人的dll报错的原因分析

cay22的专栏 3858

总结VC程序中调用服务组件COM的方法

在VC程序中调用服务组件  1、运行VC   6.0,使用MFC程序向导创建一个新的基于对话框的MFC应用程序。  2、使用#import导入服务组件,拷贝PRJADO.DLL到VC工程目录,打开STDAFX.H文件增加如下代码:  #   import   "prjado.dll "  using   namespace   prjado;    这段代码应该放置在:

拥抱变化 1385

VC中调用外部程序方式

目前知道三种方式:WinExec,ShellExecute ,CreateProcess,别人已经总结的很好了《vc中调用其他应用程序的方法(函数) winexec,shellexecute ,createprocess》,我全文转载一下,另外后面加点自己的总结(黑体部分,除了标题)。 三个SDK函数: WinExec,ShellExecute ,CreateProcess可以实现调用其他程序的

诣 1503

import引用组件类型库,自动生成.tli文件

#import引用组件类型库,自动生成.tli文件。inline long IA::GetnValue ( ) {    long _result = 0;    HRESULT _hr = get_nValue(&_result);    if (FAILED(_hr)) _com_issue_errorex(_hr, this, __uuidof(this));    return _resu

tianyu的专栏 - Linux site:blog.youkuaiyun.com/wishfly 2804

Java调用Tuxedo方法

原文章地址 摘要:在以Tuxedo为中间件的企业信息系统中,为满足分布式系统的应用,需要解决在Java程序中调用Tuxedo服务的难题,给出了一种免费的、用Visual C++2、Visual Basic3、Jacob组件和Java语言结合编程的方法,详细地解说了方法实现的原理及关键程序代码。   关键词:Java;Tuxedo服务;方法   中图分类号:TP311文献标识码:A

most_rabbitfishes的博客 4015

VC++(MFC)中WebService服务的调用

VC++(MFC)中WebService服务的调用

32位程序访问64位DLL,使用COM组件

一直纠结于微软所谓的32位程序不能访问64位dll或64位程序不能访问32位dll,MSDN上的说明也不能完全理解。 这两天纠结的问题终于需要直面了,有个项目需要转到64位平台上运行(需要超4G内存),但它是用VC6.0开发的,第一反应想到下面几个方式: 1,将VC6.0项目转到VS2005及以上,确实这样做了,报出一堆错误,真心不想debug这个了,太古老了。 2,VC6.0开发6

swtech_的博客 8194

BetaFlight开源飞控源码分析

BetaFlight是穿越机领域比较成熟的开源飞控,本篇文章主要分析一下源代码以及如何使用这个开源代码

weixin_43811044的博客 1万+

电商订单系统设计简析(一)

电商所有模块中,订单系统作为最为核心的模块,决定了整个流程能不能顺畅的执行,起着承上启下的作用。相信很多PM都不陌生,到了一家电商公司,总会觉得公司现有的流程有不少问题,因为问题来自四面八方,一下子摸不着到底是哪里出了问题,PM就跟补丁师傅一样,遇到一个补一个。其实很多日常开发和测试提得需求都是表面需求,而这些表面上呈现出的各种问题,都是源自于流程上的不完整或者流程上某个环节上的缺失导致的。订单系...

野蛮非先生的博客 9553

Win7 VC6 不能同时调用进程外组件报错问题

工作需要,需要为同一个设备提供lian

1050

esp32c6 开发实战:低功耗蓝牙(BLE)开发

蓝牙栈在此程序流程中已经启动并运行,但是应用程序的功能尚未定义。功能的定义是通过响应事件来实现的,当其他设备尝试读取或写入参数以及建立连接时就会触发事件回调函数处理。BT控制器在控制器端实现主机控制器接口(HCI),链路层(LL)和物理层(PHY)。BT控制器对用户应用程序不可见,并处理BLE堆栈的较低层。蓝牙堆栈(Bluedroid stack)定义了经典蓝牙(BT Classic)和低功耗蓝牙(BLE)的通用定义和API。的判断)等对于启动低功耗蓝牙来说不重要的代码,函数初始化和启用BT控制器。

月入鱼饵的博客 2742

VC中调用COM组件的方法

                                                       VC中调用COM组件的方法 准备及条件:COM服务器为进程内服务器,DLL名为simpCOM.dll,该组件只有一个接口IFoo,该接口只有一个方法HRESULT SayHello(void)在SDK中调用=====================================一

amd k_7的专栏 2772

drm 之modes

#define _GNU_SOURCE #include <errno.h> #include <fcntl.h> #include <stdbool.h> #include <stdint.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/mman.h> #include <time.h&...

u012794472的专栏 3718

Ferromagnetic soft continuum robots

本文来自机器人领域顶刊,Science Robotics。介绍了一种铁磁软连续体机器人,主要贡献为1)介绍了一个基于磁性微粒和聚合物的软连续体机器人的制造方法,在机器人外表面涂了一层水凝胶,极大地降低了摩擦阻力;2)并研究了在磁场下,不同粒子体积分数下,此机器人的驱动性能;利用手动操控的磁铁,进行了许多实验证明该机器人性能的优异性。 铁磁软连续体机器人 Ferromagnetic soft continuum robots [1] Paper Link Authors: Kim, Yoonho, et al

XU Yangxin的博客 1374

vc 调用其他exe程序

写一个利用VC调用ACDSee打开一个图片文件的简单程序,于是了解了一些VC中调用其他程序的方法。 VC中调用其他程序的方法一般有三种,分别利用三个API函数WinExec,ShellExecute ,CreateProcess。其中WinExec最简单,但较老;ShellExecute简单灵活,较为实用; CreateProcess则控制比较全面,但是较为复杂。下面分别介绍一下这三种方

sha_jinhao的专栏 2599

【CIC-IDS数据集+机器学习】实现网络流量异常检测

本项目基于CIC-IDS数据集,使用多种机器学习算法实现网络流量异常检测系统。项目采用了完整的机器学习工作流程,从数据预处理到模型部署,实现了高精度的网络入侵检测。

XiaoMu_001的博客 1935

python调用com组件_VC中调用COM组件的方法

准备及条件:COM服务器为进程内服务器,DLL名为simpCOM.dll,该组件只有一个接口IFoo,该接口只有一个方法HRESULT SayHello(void)在SDK中调用=====================================一、最简单最常用的一种,用#import导入类型库,利用VC提供的智能指针包装类演示代码:#import "D:\Temp\vc\simpCOM\D...

weixin_39929566的博客 631

Spatial-ORMLLM: Improve Spatial Relation Understanding in the Operating Room with Multimodal Larg...

手术室(OR)中的精准空间建模是众多临床任务的基础,可为术中感知、风险规避及手术决策提供支持。现有方法虽利用大规模多模态数据集进行 latent 空间对齐,以隐式学习空间关系,但却忽视了多模态大型语言模型(MLLM)的3D能力。然而,这种方法存在两个问题:1)手术室通常缺乏多台视频和音频传感器,多模态3D数据难以获取;2)仅依赖易获取的2D数据训练,无法捕捉复杂场景中的细粒度细节。为解决这一问题,我们提出——首个针对手术室3D空间推理的大型视觉语言模型。

UnknownBody_2的博客 592

李宏毅2025《机器学习》第一讲-生成式AI:技术突破和未来发展

本文基于台湾大学李宏毅教授的“一堂课搞懂生成式人工智慧的技术突破与未来发展”课程内容,系统性地梳理了生成式AI的核心概念、技术原理、发展演进以及未来趋势。文章从AI的“行为”入手,通过生动的实例展示了其强大的生成与推理能力;进而深入剖析其底层运作机制,阐释了“万物皆为令牌(Token)”、自回归生成、Transformer架构等核心原理;接着,文章追溯了通用AI模型从“专才”到“通才”的演进历程;最后,探讨了如何通过微调(Fine-tuning)、模型编辑(Model Editing)等技术赋予AI新的能力

木鱼时刻的专栏 2295

VC调用 JavaScript 难题:如何使当前程序的对象进入脚本

本文所指的  JavaScript 为 MS Script,引入msscript.ocx 实现的,也就是ECMAScript(下载本例源代码)。从题目咋眼看来对于没有写过VC调用msscript.ocx的人来说不是很好理解,因为这样做似乎太容易了,何来难题?例如写JavaScript实 现数值计算,例如: _variant_toutpar=pScriptControl->Eval(_bst

噎死你 2442

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

C#与VC相互调用之C#调用VC的DLL

介绍 每种语言都有其优势和特点,复杂的项目一般需要2种及以上的语言,这样才能发挥每种语言的优势。这里就介绍一下C#如何调用VC的DLL 项目创建 打开VS2010,因为设计到两个程序,这里先创建一个空的解决方案: 然后再来创建一个VC的DLL项目: 选择Win32项目模板: 选择应用程序的类型为DLL: 这里不用勾选“导出符号”,稍后自己来写导出就行。点击完成后生成如下文件: dllma...

xinxin_2011的博客 4523

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

VC调用MATLAB

http://wangqingyun84.blog.163.com/blog/static/7908361720120325810491/   在VC中使用CPen绘制宽度大于1的虚线   Matlab的函数及指令(转) VC中调用Matlab(转)   2012-01-03 14:59:06|  分类: Matlab |  标签: |字号大中小 订阅

weiweiliulu的专栏 949

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

在VC中调用VB编写的COM组件范例

VB调用VC的DLL大家应该不陌生,而VC如何调用VB编写的DLL这个问题对于搞VB开发的人来说可能却就是个问题。为了广大的VB爱好者向VC进军,我就从VB开发者的角度来说说在VC中调用VB编写的COM组件的方法。我举个例子。 先说说VB开发一个COM组件。 用VB新建一个ActiveX DLL 工程, 然后修改工程名称为 MyVB 再修改默认的类名为 DEMO 然后再向类中添加一个函数作为测试用

SupermanKing的专栏 6456
上一篇: VC中调用COM组件的方法
下一篇: Visual Studio 2005:在 Visual C++ 中开发自定义的绘图控件
amdk_7
博客等级 码龄22年 12粉丝 2原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值