delphi 写的COM 组件如何被C++调用(100分)

  • 主题发起人 主题发起人 lanxz
  • 开始时间 开始时间
L

lanxz

Unregistered / Unconfirmed
GUEST, unregistred user!
用DELPHI 可以生成MTS DATA MODULE 的COM 组件,它支持的接口为IAPPSERVER,
并不是COM 通用的IUNKNOWN 接口。这种组件可以被DELPHI 写的客户端程序调用(用
TDCOMCONNECTION 控件)。
我现在想用C++来调用这个COM组件,试了几次,没有成功。在C++调用COM 组件采用
WINDOWS API --CoCreateInstance()函数实现,无法生成关于此COM 组件的 .h 文件,
因此无法实例化COM组件。。。
不知那位高人能接此招? 谢谢!!!
 
其实关键问题就在那个*.h上面,有了它一切OK,不过讨厌的是delphi5直接导出来的*.tlb,*.idl
格式都好奇怪,在VC++中built一下发现接口的定义中连一个属性和方法也没有,害得我试验了半天
结果只导进去了一个无用的类而已。
反正就我所知,delphi和VC可以公用的仅有*.dll,*.idl,*.tbl等有限几个文件罢了(而且还都是system标准格式的)
我碰到这个问题,满脑子想的都是如何“自动的、简单的”从已经有的东西里面把那个该死的*.h头文件弄出来
因为手工来写那些接口的定义,虽然也写得出来,但还不把人活活累死 T_T。
 
将对象在本机注册后,或者将tlb用tregsvr在本机注册后,
在 Borland C++ Builder 的菜单 Project/import Type Lib
可以生成 *.h、 *.cpp
另外bcb也有 CreateComObject 函数
 
to Pipi:太感谢了,终于有人肯就此问题“指点迷津”了,可是——我还是不明白呀>_<,
不知lan兄明白了没有......
使用BCB生成的*.h是否使用到了VCL或者其他什么的,在下的困境是“应该仅用C++,最好
不用VC、BCB”等,不过在下“菜”,目前还在使用VC来写C++程序(牛刀杀鸡?),BCB不
太熟悉,Pipi能否说的再详细一点(就一点嘛)——我希望程序能够尽可能的通用一些,
这里先谢了^O^。
 
那就糟糕,是用了vcl的,必须用bcb才行,vc都没戏
 
哎呀,看来没人对这个问题感兴趣了。好奇怪呀,难道大家从来都不“不同语言
联合编程”吗?而且我不明白的是,COM不是“语言无关性”的吗?为什么应用起
来,这么多麻烦(看来是自己道行不够)。
 
在VC++中如下实现:
#import "yourdllname.dll"

#import "yourdllname.dll" no_namespace
 
to Hongjiang
import无疑是非常方便的做法,不过我有一点疑问,就是*.dll不在本地的情况(DCOM)应该
如何处理呢?
 
哎,真是无人问津的问题呀,有道是:
把栏杆排遍,无人晓,登临意
so so,问题提前,免得高手路过时没有看见(什么?高手才不屑这种问题?不会吧...)
 
不是不想回答你的问题,是这个论坛太难上来.
你想能够开发使用DCOM服务的程序,你本地至少要有你的DCOM服务程序
的Type Library. 你的dll不在本地, 那你就用
#import "yourdllname.tlb"
如果连.tlb都没有你怎么开发?
 
多人接受答案了。
 
后退
顶部