gpt4 book ai didi

c# - F# 使用非托管 dll 函数

转载 作者:行者123 更新时间:2023-11-30 17:49:44 27 4
gpt4 key购买 nike

我有一个用 F# 编写的项目,我必须为其中的一部分使用非托管 DLL。我是 .Net 编程的新手,所以这是在其他一切之上添加的另一个复杂级别。

在非托管 DLL 的文档中,他们提供了如何使用 C# 函数的示例,如下所示:

using System;
using System.Runtime.InteropServices;

[DllImport("foo.dll")] public static extern Int32 foo_init(
[MarshalAs(UnmanagedType.AnsiBStr), In()] ref string FOOarg_Handle,
[MarshalAs(UnmanagedType.AnsiBStr), In()] ref string FOOarg_User,
[MarshalAs(UnmanagedType.AnsiBStr), Out()] out string FOOarg_DataOut,
[MarshalAs(UnmanagedType.AnsiBStr), Out()] out string FOOarg_ErrOut);

这本身就很丑陋,但我不知道如何从 F# 中做到这一点。只创建一个 C# 类,将所有包装外部 DLL 函数的函数定义放在那里,然后从 F# 调用它们,而不是直接从 F# 调用非托管函数,这不是一个好主意吗?

要不然怎么办呢?提前致谢!

最佳答案

在 MSDN 或规范中似乎没有对 extern 函数声明的语法的描述。但是,据我所知,它逐字反射(reflect)了 C 声明,正如您从 these (rather old) examples 中看到的那样。 .

我在 MSDN 页面上为 External Functions 留下了反馈建议它包括语法的解释和示例。

关于c# - F# 使用非托管 dll 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21315096/

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