VC调用VB写的COM
VB.
步骤:
1.创建类库;类库的创建必须分为接口和实现类;给外面提供的是COM接口;
创建了接口和类之后还要创建“Guid”,这个在“工具-》创建GUID”创建。[Guid("A1DEEF6C-A752-4498-9AA9-7ABFA2C9B8C2")]
2.在“项目属性-》生成”勾选“为COM Interop注册”;在“项目属性-》应用程序-》程序集信息”中设置“使程序集COM可见”;
经过上面两步就生成了COM方式的DLL,会生成两个文件,一个是DLL文件,一个是tlb文件,VC要用的正是这个tlb文件。
例:
<ComClass(GetCbwApp.ClassId, GetCbwApp.InterfaceId, GetCbwApp.EventsId)> _
Public Class GetCbwApp
#Region "COM GUID"
' 这些 GUID 提供此类的 COM 标识
' 及其 COM 接口。若更改它们,则现有的
' 客户端将不再能访问此类。
Public Const ClassId As String = "a7e68ccf-873b-4295-ae73-d599a840876c"
Public Const InterfaceId As String = "e9058762-5a15-43ae-ac4a-a2683a8fbc40"
Public Const EventsId As String = "439d4951-b443-4eaf-aa44-50fb41937b1a"
#End Region
Public Sub Login()
MsgBox ("1")
End Sub
End Class
VC这边的调用方式有两种,一种是用命名空间的方式,一种是不用命名空间的方式。
不用命名空间的方式:
#import "xxx.tlb" no_namespace named_guids int main(int argc, char* argv[])
{
CoInitialize(NULL); IUserPtr pICalc(CLSID_User);//接口名+Ptr; CLSID+实现类的名称
pICalc->Login();//直接调用接口函数
CoUninitialize();
}
用命名空间的方式:
#import "xxx.tlb" using namespace ClassLibrary1; HRESULT hresult;
CLSID clsid;
/* ARGSUSED */
void ufusr(char *param, int *retcod, int param_len)
{
CoInitialize(NULL); //initialize COM library
//hresult=CLSIDFromProgID(OLESTR("bcsUGIntegration.CbwApp"), &clsid); //retrieve CLSID of component
ClassLibrary1::_GetCbwAppPtr pUser = NULL;
hresult=pUser.CreateInstance(__uuidof(ClassLibrary1::GetCbwApp));
if(FAILED(hresult))
{
return;
}
else
{
pUser->Login();
}
}
VC调用VB写的COM的更多相关文章
- c++builder调用VC的dll以及VC调用c++builder的dll
解析__cdecl,__fastcall, __stdcall 的不同:在函数调用过程中,会使用堆栈,这三个表示不同的堆栈调用方式和释放方式. 比如说__cdecl,它是标准的c方法的堆栈调用方式,就 ...
- C#调用VB6写的ActiveX Dll
搜索了很多资料,下载了Demo:http://download.csdn.net/detail/xieguoxian/2747484然后在同学电脑上测试才弄好...记录下 (一) 前期搜索资料: VB ...
- 用VC实现竖写汉字的方法
中国人自古就有自右至左.从上到下书写汉字的习惯.而当我们在自己所编写的应用程序中使用输出函数输出的总是自左至右的横排文字.有没有可能在我们的应用程序中实现竖写汉字的效果呢?笔者偶然发现了一种利用VC实 ...
- 使用Wscript/cscript调用VB脚本
●强制用Wscript.exe执行 SET Wshell=CreateObject("Wscript.Shell") if lcase(right(Wscript.fullName ...
- asp 调用 vb(activex dll) ,参数传递(传引用)需要注意
今天上午测试 vb 与 c(dll) 之间交互,传递参数的时候,没遇到什么太大的问题. 下午在asp中调用vb(activex dll)时, 在asp代码中传参数到 vb(dll)中时,遇到问题了. ...
- VC调用MATLAB
最近项目要用VC调用MATLAB,今天闲来无事,在这里稍微总结了一下初级的用法,大家共同学习: 首先在MATLAB Command Window里输入mbuild -setup,一步步走 还有一个me ...
- VC与VB
VB调用VC dll的返回方式 第一种类型:数值传递注意:在VB中,默认变量传递方式为ByRef为地址,而传递值就是用ByVal,还要注意在C++中,int类型的变量是32位的,在VB中要用long型 ...
- c++ c# java 调用 c++ 写的dll
1. vs 中新建win32 dll 项目 testdll 添加实现文件 test.cpp #include "stdafx.h" #include <ios ...
- 在Android中调用C#写的WebService(附源代码)
由于项目中要使用Android调用C#写的WebService,于是便有了这篇文章.在学习的过程中,发现在C#中直接调用WebService方便得多,直接添加一个引用,便可以直接使用将WebServi ...
随机推荐
- 050-PHP除法运算
<?php $n=10/3; //除法运算 echo $n; //输出变量n的值 ?>
- C# 读取CSV格式数据 读取为DataTable类型
先贴代码: using System.Data;using System.Data.OleDb; static void Main(string[] args) { var strpath = Sys ...
- MSP430系列单片机笔记00
嵌入式系统 嵌入式系统(Embedded system),是一种“完全嵌入受控器件内部,为特定应用而设计的专用计算机系统”,根据英国电气工程师协会( U.K. Institution of Elect ...
- 负载均衡与CDN简介
负载均衡 负载均衡是高可用网络基础架构的的一个关键组成部分,有了负载均衡,我们通常可以将我们的应用服务器部署多台,然后通过负载均衡将用户的请求分发到不同的服务器用来提高网站.应用.数据库或其他服务的性 ...
- Docker 镜像(image)
版权所有,未经许可,禁止转载 章节 Docker 介绍 Docker 和虚拟机的区别 Docker 安装 Docker Hub Docker 镜像(image) Docker 容器(container ...
- Bean XML 配置(4)- 自动装配
Spring 系列教程 Spring 框架介绍 Spring 框架模块 Spring开发环境搭建(Eclipse) 创建一个简单的Spring应用 Spring 控制反转容器(Inversion of ...
- 黑马oracle_day01:01.oracle体系结构
01.oracle体系结构 02.oracle的基本操作 03.oracle的查询 04.oracle对象 05.oracle编程 01.oracle体系结构 开发环境:VMware® Worksta ...
- mock的使用及取消,node模仿本地请求:为了解决前后端分离,用户后台没写完接口的情况下
借鉴:https://www.jianshu.com/p/dd23a6547114 1.说到这里还有一种是配置node模拟本地请求 (1)node模拟本地请求: 补充一下 [1]首先在根目录下建一个d ...
- 16 ~ express ~ 添加博客分类
一,创建表结构 /schemas/categories.js var mongoose = require('mongoose') module.exports = new mongoose.S ...
- 微服务和SpringCloud入门
微服务和SpringCloud入门 微服务是什么 微服务的核心是将传统的一站式应用,根据业务拆分成一个一个的服务,彻底去耦合,每个微服务提供单个业务功能的服务,一个服务做一件事情,从技术角度看就是一种 ...