gpt4 book ai didi

c++ - 在 C++ Builder 中使用 COM

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:18:52 26 4
gpt4 key购买 nike

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

我找不到教程,但我看到了不同的方法:

  1. Component > Import component > 它会生成一个新的包装器单元...然后呢?
  2. 用绝对路径导入DLL(为什么?它在系统中注册了)

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

    ...然后呢?

  3. 使用CoCreateInstance...具体怎么做?没有导入/包含?

在 Visual C# 中,我处理它只是添加一个引用和一个 using!

我很困惑!感谢您的帮助。

最佳答案

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

  • 组件 > 导入组件... > 导入类型库 > 选择库
  • Unit Dir Name = 并取消选中“Generate Component Wrappers”
  • “将单元添加到 MyProject.cbproj 项目”> 完成
  • 在客户端类 > File > Use Unit... > 选择创建的单元
  • 在客户端类中编写使用 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.* 单元。有什么办法可以避免吗?

关于c++ - 在 C++ Builder 中使用 COM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13456628/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com