gpt4 book ai didi

delphi - 错误 : Constant or type identifier expected

转载 作者:行者123 更新时间:2023-12-03 18:31:17 25 4
gpt4 key购买 nike

我正在尝试在我的 delphi 7 程序中使用外部 DLL 函数。我在 C 中有一个调用 DLL 文件的示例。

在C语言中是这样定义的

#define SerNumAddress 0x1080

HINSTANCE hDLL430; // handle of DLL
static FARPROC pMSPGangInitCom = NULL; // pointer to DLL function

我用 delphi 写

unit msp430d;

interface
USES windows, event, paras;

const

SerNumAddress = $1080 ;
pmspganginitcom:FARPROC = nil;

TYPE
hDLL430 = HINSTANCE;

implementation

end.

但是我得到了 constant or type identifier expected 错误。

最佳答案

问题是 HINSTANCE 的使用。

System 单元中有一个名为 HInstance 的全局变量,它表示包含正在执行的代码的模块句柄。您正在尝试使用 HINSTANCE 作为类型。由于变量 HInstance,名为 HINSTANCE 的类型会发生冲突。因此,该类型在 Windows 单元中被翻译为 HINST

所以,下面的代码可以编译:

type
hDLL430 = HINST;

但是,在我看来,这些天使用HMODULE 会更正常。参见 What is the difference between HINSTANCE and HMODULE?

考虑 C 代码中的注释:

HINSTANCE hDLL430; // handle of DLL

好吧,如果你看一下 LoadLibrary 的声明和 GetProcAddress ,您会看到 DLL 模块句柄由 HMODULE 表示。所以我会把这段代码翻译成:

type
hDLL430 = HMODULE;

此外,与其使用 FARPROC,我会选择声明一个包含参数、返回值和调用约定的函数指针,以允许编译器强制执行类型安全。

关于delphi - 错误 : Constant or type identifier expected,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30251404/

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