在C ++ Builder中使用COM

时间:2012-11-19 15:14:35

标签: c++ dll com c++builder c++builder-xe2

我是COM库的新手,我坚持在我的C ++ Builder(XE2)应用程序中使用COM DLL。 DLL已注册。哪些步骤允许我创建属于这种DLL的对象并调用它们的方法?我的意思是静态的。

我找不到教程,而我看到了不同的方式:

  1. 组件>导入组件>它产生了一个新的包装单元......然后是什么?
  2. 使用绝对路径导入DLL(为什么?它在系统中注册)

    #import "C:\Path\to\the\LIB1.dll" rename_namespace ("LIB1")
    

    ......然后是什么?

  3. 使用CoCreateInstance ......究竟是怎么回事?没有import / include?

    在Visual C#中,我只需添加引用和using

    即可

    我很困惑!任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:1)

我找到了一种方法(但是告诉我是否有更好的方法):

  • 组件>导入组件...>导入类型库>选择库
  • Unit Dir Name =并取消选中“Generate Component Wrappers”
  • “将单位添加到MyProject.cbproj项目”>完成
  • 在客户端类>文件>使用单位...>选择已创建的单位
  • 客户端类中的
  • 编写此代码以使用COM DLL:

    CoInitialize(NULL); //Init COM library DLLs  
    
    ICompany *company;        
    
    HRESULT hr = CoCreateInstance ( CLSID_Company,  
                                    NULL,  
                                    CLSCTX_INPROC_SERVER,  
                                    IID_ICompany,  
                                    (void**) &company );  
    if (SUCCEEDED (hr)) {  
         //TODO here you can use your company object!
         //and finally release such resource
         company->Release();  
    }  
    
    CoUninitialize();
    

Company是原始类,由DLL公开,我想要实例化。

Introduction to COM - What It Is and How to Use It.给了我很多帮助。

注意这需要创建* _TLB。*和* _OCX。* units 。有没有办法避免它?