gpt4 book ai didi

delphi - 无法在动态链接库 中找到过程入口点

转载 作者:行者123 更新时间:2023-12-01 21:48:42 24 4
gpt4 key购买 nike

我已经转换了所有 VB.NET DLL 声明

Declare Function SFileOpenArchive Lib "Storm.dll" Alias "#266" (ByVal lpFileName As String, ByVal dwPriority As Integer, ByVal dwFlags As Integer, ByRef hMPQ As Integer) As Boolean

进入德尔福。

function SFileOpenArchive(lpFileName: String; dwPriority, dwFlags, hMPQ: Integer): Boolean; stdcall; external 'Storm.dll';

但是,当我调用函数并编译程序时,出现以下错误:

The procedure entry point SFileOpenArchive could not be located in the dynamic link library Storm.dll.

我已确保:

  1. DLL 与应用程序存储在同一目录中
  2. 我声明的函数存在(我得到了用 VB.NET 编写的源代码)

我该如何修复此错误?

提前谢谢您。

最佳答案

我发现您存在以下问题:

  1. 该函数已按序号而不是名称导出。您需要在 Delphi 代码中指定序数。
  2. 第一个参数应该是 PAnsiChar 而不是 Delphi 字符串。 VB 代码使用字符串指示编码器传递以 null 结尾的字符串。根据经验,在 DLL 导入或导出中包含 Delphi 托管的类似字符串的类型几乎总是错误的。
  3. 最终参数通过引用传递。这是一个 Delphi var 参数。
  4. 我认为返回值应该是 BOOL,但这可能不会给您带来麻烦。

将它们放在一起,如下所示:

function SFileOpenArchive(lpFileName: PAnsiChar; 
dwPriority, dwFlags: Integer; var hMPQ: Integer): BOOL;
stdcall; external 'Storm.dll' index 266;

请注意,我不能 100% 确定文本编码是 ANSI。然而,对您来说主要的障碍是序数导入。我希望我已经为你澄清了这一点。我相信您可以解决剩余的细节。

关于delphi - 无法在动态链接库 <dll> 中找到过程入口点 <function>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12886675/

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