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的更多相关文章

  1. c++builder调用VC的dll以及VC调用c++builder的dll

    解析__cdecl,__fastcall, __stdcall 的不同:在函数调用过程中,会使用堆栈,这三个表示不同的堆栈调用方式和释放方式. 比如说__cdecl,它是标准的c方法的堆栈调用方式,就 ...

  2. C#调用VB6写的ActiveX Dll

    搜索了很多资料,下载了Demo:http://download.csdn.net/detail/xieguoxian/2747484然后在同学电脑上测试才弄好...记录下 (一) 前期搜索资料: VB ...

  3. 用VC实现竖写汉字的方法

    中国人自古就有自右至左.从上到下书写汉字的习惯.而当我们在自己所编写的应用程序中使用输出函数输出的总是自左至右的横排文字.有没有可能在我们的应用程序中实现竖写汉字的效果呢?笔者偶然发现了一种利用VC实 ...

  4. 使用Wscript/cscript调用VB脚本

    ●强制用Wscript.exe执行 SET Wshell=CreateObject("Wscript.Shell") if lcase(right(Wscript.fullName ...

  5. asp 调用 vb(activex dll) ,参数传递(传引用)需要注意

    今天上午测试 vb 与 c(dll) 之间交互,传递参数的时候,没遇到什么太大的问题. 下午在asp中调用vb(activex dll)时, 在asp代码中传参数到 vb(dll)中时,遇到问题了. ...

  6. VC调用MATLAB

    最近项目要用VC调用MATLAB,今天闲来无事,在这里稍微总结了一下初级的用法,大家共同学习: 首先在MATLAB Command Window里输入mbuild -setup,一步步走 还有一个me ...

  7. VC与VB

    VB调用VC dll的返回方式 第一种类型:数值传递注意:在VB中,默认变量传递方式为ByRef为地址,而传递值就是用ByVal,还要注意在C++中,int类型的变量是32位的,在VB中要用long型 ...

  8. c++ c# java 调用 c++ 写的dll

    1. vs 中新建win32 dll 项目   testdll 添加实现文件       test.cpp #include "stdafx.h" #include <ios ...

  9. 在Android中调用C#写的WebService(附源代码)

    由于项目中要使用Android调用C#写的WebService,于是便有了这篇文章.在学习的过程中,发现在C#中直接调用WebService方便得多,直接添加一个引用,便可以直接使用将WebServi ...

随机推荐

  1. Python 中 unittest 框架加载测试用例的常用方法

    unittest 当中为我们提供了许多加载用例的方法,这里说下常用的两种方法...推荐使用第二种 第一种加载测试用例的方法:使用加载器加载两个模块 需要把所有的模块加载到套件中 那么就可以自动的运行所 ...

  2. 四十一、在SAP中添加多条件选择框

    一.代码如下: 二.其中我们的文本替换内容如下 三.需要注意的是波浪线的用法,以及区域的添加方法.运行程序,显示如下 四.不勾选时,查询出来是去掉国际的 五.勾选之后,查询的是全部的 六.显示如下 七 ...

  3. 干货分享|留学Essay怎么写?

    留学生活其实就是分割成一个个deadline,留学就是赶完一个又一个deadline.朋友同学的革命情感源自赶一个个deadline时候的不离不弃,相知相守,无数个夜里大家群里打卡,你今天Essay写 ...

  4. 吴裕雄 Bootstrap 前端框架开发——Bootstrap 字体图标(Glyphicons):glyphicon glyphicon-list-alt

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...

  5. Python量化交易的简单介绍

    Python只是一门技术. 一.量化交易的发展 1.国外量化金融领域发展日趋成熟. 2.近几年量化交易在国内掀起热潮. 3.Python作为量化交易的编译语言. 二.什么是量化交易 1.利用计算机强大 ...

  6. UVA - 10954 Add All (全部相加)(Huffman编码 + 优先队列)

    题意:有n(n <= 5000)个数的集合S,每次可以从S中删除两个数,然后把它们的和放回集合,直到剩下一个数.每次操作的开销等于删除的两个数之和,求最小总开销.所有数均小于10^5. 分析:按 ...

  7. 51nod 1006:最长公共子序列Lcs

    1006 最长公共子序列Lcs 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题  收藏  关注 给出两个字符串A B,求A与B的最长公共子序列(子序列不要求是连续的). ...

  8. java百货中心供应链管理系统 源码

    开发环境: Windows操作系统开发工具:MyEclipse/Eclipse + JDK+ Tomcat + MySQL 数据库 百货中心供应链管理系统主要用于实现了企业管理数据统计等.本系统结构如 ...

  9. 翻译小工具制作,Python简单破解有道JS加密!

    写这篇文章之前,我记得我以前好像公布一次.百度翻译的接口把版本号修改可以得到老版本,而老版本是没JS加密的,有道的呢也是一样的. ! 不过今天的教程不会这么low,咱们今天就老老实实把有道翻译的JS破 ...

  10. 吴裕雄--天生自然TensorFlow2教程:高阶操作

    import tensorflow as tf a = tf.random.normal([3, 3]) a mask = a > 0 mask # 为True元素,即>0的元素的索引 i ...