是否可以让delphi项目创建一个lib文件作为项目的输出?
我希望它创建 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
在 Delphi 中创建的 C++ DLL 中使用(反之亦然)非常简单,但您需要遵循简单的操作
规则。我假设您正在尝试在 C++ 项目中使用 Delphi DLL:
您必须使用相同的调用约定。默认情况下,Delphi 使用寄存器约定(__fastcall in
C++ 术语)。所有Windows DLL的默认调用约定是__stdcall,所以首先修改
Delphi 源文件中的函数声明如下:
函数 DoSomething(x, y: 整数): 整数; stdcall;
当您使用 __stdcall 时,C++ 期望 DLL 中的导出函数的名称后跟指定传递给它的参数的总体大小的后缀。因此,你的 DoSomething 例程应该
变为 DoSomething@8,考虑到 Integer 的大小为 4 个字节并且您的导出部分
.dpr 文件中的内容应如下所示:
出口
DoSomething name 'DoSomething@8'
使用函数声明创建 C++ 标头并将其包含到您的 C++ 项目中:
int __declspec(dllimport) __stdcall DoSomething(int x, int y);
如果您使用 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:
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;
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'
Create C++ header with function declaration and include it to your C++ project:
int __declspec(dllimport) __stdcall DoSomething(int x, int y);
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.
不,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.