是否可以让delphi项目创建一个lib文件作为项目的输出?

发布于 2024-09-01 10:01:42 字数 86 浏览 2 评论 0原文

我希望它创建 dll 和 LIB。因为这个dll静态链接到另一个CPP dll。 所以我必须有lib文件。

我正在使用delphi 4的IDE

I want it to create dll and LIB. because this dll is statically linked to another CPP dll.
so I must have the lib file.

i'm using the IDE of delphi 4

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

空城仅有旧梦在 2024-09-08 10:01:43

在 Delphi 中创建的 C++ DLL 中使用(反之亦然)非常简单,但您需要遵循简单的操作
规则。我假设您正在尝试在 C++ 项目中使用 Delphi DLL:

  1. 您必须使用相同的调用约定。默认情况下,Delphi 使用寄存器约定(__fastcall in
    C++ 术语)。所有Windows DLL的默认调用约定是__stdcall,所以首先修改
    Delphi 源文件中的函数声明如下:

    函数 DoSomething(x, y: 整数): 整数; stdcall;

  2. 当您使用 __stdcall 时,C++ 期望 DLL 中的导出函数的名称后跟指定传递给它的参数的总体大小的后缀。因此,你的 DoSomething 例程应该
    变为 DoSomething@8,考虑到 Integer 的大小为 4 个字节并且您的导出部分
    .dpr 文件中的内容应如下所示:

    出口
    DoSomething name 'DoSomething@8'

  3. 使用函数声明创建 C++ 标头并将其包含到您的 C++ 项目中:

    int __declspec(dllimport) __stdcall DoSomething(int x, int y);

  4. 如果您使用 C++ Builder 或 Visual C++,请使用 implib 实用程序来创建导入库 (.lib)。 VC++ 附带的 lib 工具也可以做同样的事情。然后链接该 .lib 文件而不是 .dll。

Using in C++ DLLs created in Delphi (as vice-versa) is pretty easy, but you need to follow simple
rules. I assume you are trying to use Delphi DLL in C++ project:

  1. You must use the same calling convention. By default, Delphi uses register convention (__fastcall in
    C++ terminology). Default calling convention for all Windows DLLs is __stdcall, so first modify the
    function declaration in your Delphi source file as follows:

    function DoSomething(x, y: Integer): Integer; stdcall;

  2. When you use __stdcall, C++ expects exported functions in the DLL to have the names followed by the postfix designating the overall size of the params passed to it. Thus, your DoSomething routine should
    become DoSomething@8, taking into account that the size of Integer is 4 bytes and your exports section
    in the .dpr file should look like:

    exports
    DoSomething name 'DoSomething@8'

  3. Create C++ header with function declaration and include it to your C++ project:

    int __declspec(dllimport) __stdcall DoSomething(int x, int y);

  4. If you use C++ Builder or Visual C++, utilize implib utility which creates import library (.lib). There is also a lib tool coming with VC++ which can do the same. Then link with that .lib file instead of .dll.

℡Ms空城旧梦 2024-09-08 10:01:43

不,Delphi 不生成 lib 文件。这对他们来说没有任何用处。

有多种方法可以从 DLL 创建 lib 文件。例如,您可以使用 implib,如果它随您的 Delphi 版本一起提供。

No, Delphi does not generate lib files. It has no use for them.

There are ways to create a lib file from a DLL. For example, you can use implib, if it came with your version of Delphi.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文