我如何(或者如果我不能)在简单的 DLL 上使用变体?
我想将内部对象的某些功能公开为 DLL - 但该功能使用变体。但我需要知道:我可以导出带有 Variant 参数和/或返回的函数 - 或者最好使用仅字符串表示?
从与语言无关的 POV 来看,什么更好(消费者不是用 Delphi 制作的 - 但一切都将在 Windows 中运行)?
I want to expose some functionality of a internal object as a DLL - but that functionality uses variants. But I need to know: I can export a function with Variant parameters and/or return - or is better to go to an string-only representation?
What is better, from language-agnostic POV (the consumer is not made with Delphi - but all will run in Windows)?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以使用 OleVariant,它是 COM 使用的变体值类型。
确保不要将其作为函数结果返回,因为 stdcall 和复杂的结果类型很容易导致问题。
一个简单的例子
DelphiLib 库;
如何从 C# 中使用它:
You could use OleVariant, which is the variant value type that is used by COM.
Make sure not to return it as a function result as stdcall and complex result types can easily lead to problems.
A simple example
library DelphiLib;
How it could be consumed from C#:
据我所知,在其他语言中使用 Variant 变量类型没有问题。
但如果您为不同的变量类型导出相同的函数,那就太好了。
As far as I know there is no problems to work with Variant variable type in other languages.
But it will be great if you export the same functions for different variable types.