这将是我第一次尝试在Delphi中编写DLL以便从其他语言调用。
我已经做了很多谷歌搜索并看到了一些好的指针,但没有详尽无遗(至少,我有问题在the Embarcadero material找不到答案)。
我想知道这个警告列表是否有效,或者我是否遗漏了任何内容,以及是否有人可以在下面提出我的问题。
ShareMem
单元。String
类型,应该坚持使用PChar
integetr
和PChar
等简单类型(其他?)几个问题:
integer
和PChar
s的长参数列表? 布尔值?或者我坚持“zer0 === false而其他一切都是真的”?
还有什么我应该知道的吗?
提前感谢您提供任何帮助
答案 0 :(得分:8)
编译器禁止我导出枚举和常量。 我只是没有正确宣布它们吗?我想打电话 Delphi s / w能够使用枚举元素和所有 调用者能够使用常量。
您无法导出枚举类型和常量。调用者必须再次声明它们。类型也是如此。
我不应该因为可能而使用任何结构 编译器之间字节对齐的差异。
随意使用记录。对齐在同一平台上的编译器之间标准化。请确保使用符合平台标准的现代Delphi,XE2或更高版本,以便正确对齐。
所以,如果我不能接受strectures作为参数。我想我应该有一个很长的整数和PChars参数列表?
您可以接收记录作为参数。
我可以接受数组作为参数,还是接受边界 对齐使那危险吗?
您可以接受数组。您需要接收指向第一个元素的指针和元素数量。数组元素始终紧跟在前面的元素之后。
我可以接受/返回浮点数/双打吗?布尔?或者我坚持“零===假,其他一切都是 真的“?
是的,您可以使用浮点类型和布尔值。
还有什么我应该知道的吗?
几乎可以肯定。
我会再提一个问题,但肯定会有更多问题。不要将记录用作函数的返回类型。 Delphi在处理记录的函数返回类型时不遵循平台标准。请改用out参数。
通过示例学习可以做什么的好方法是研究Windows API。