【问题标题】:Deploy project without Midas.dll C++在没有 Midas.dll C++ 的情况下部署项目
【发布时间】:2015-12-16 00:00:53
【问题描述】:

我正在努力做到这一点,以便我可以将使用 Midas.dll 的 firemonkey 项目部署到另一台机器上,而无需复制 DLL。 This article 解释了如何通过在您的 uses 子句中包含 MidasLib 来使用 delphi 项目执行此操作,如下所示:

program Project1;

uses
  MidasLib,
  Forms,
  Unit1 in 'Unit1.pas' {Form1};

我对 delphi 不是很熟悉,但我假设在 C++ 中我想使用 #include 语句来代替 uses 语句。由于 MidasLib 是一个 .pas 文件,我假设我应该包含Midas.hpp。但是,即使我在使用它的文件中包含Midas.hpp,我仍然会收到一个异常提示“找不到Midas.dll”。

如何部署我的项目而不必复制 Midas.dll 文件?

【问题讨论】:

    标签: c++ dll c++builder firemonkey c++builder-xe8


    【解决方案1】:

    您还应该链接静态库并调用RegisterMidasLib 函数:

    #include <Midas.hpp>
    
    // or use the Project Manager's "Add to Project" option
    #pragma comment(lib, "midas.lib")
    
    extern "C" __stdcall DllGetDataSnapClassObject(REFCLSID, REFIID, void **);
    
    void InitMidas() 
    {
      #pragma startup InitMidas 254
      RegisterMidasLib(DllGetDataSnapClassObject);
    }
    

    更多详情here

    【讨论】:

    • 另外,我必须添加#include &lt;DSIntf.hpp&gt; 才能访问RegisterMidasLib 函数。