gpt4 book ai didi

c++ - 在 VB.NET 中使用 DLL 导入/声明以及 .NET 不使用的参数类型

转载 作者:行者123 更新时间:2023-11-30 03:10:27 25 4
gpt4 key购买 nike

我正在处理一个项目,我必须将一个 DLL 文件导入到几年前创建的 VB 项目中。 DLL 是用 C++ 创建的,看起来像:

void CoordinateConversionService::convert( SourceOrTarget::Enum sourceDirection, SourceOrTarget::Enum targetDirection, CoordinateTuple* sourceCoordinates, Accuracy* sourceAccuracy, CoordinateTuple& targetCoordinates, Accuracy& targetAccuracy )

我是一名实习生,我还没有使用过它,所以我的理解非常有限,还有我对 VB 的使用(我是 C++/C# 的人)。这里有几个问题:

1) 查看 Dllimport,参数之外的最后一部分似乎是返回类型。来自另一个站点的示例代码:

<DllImport("advapi32.dll")> _
Public Function GetUserName( _
ByVal lpBuffer As StringBuilder, _
ByRef nSize As Integer) As Boolean

“As Boolean”是返回类型吗?如果是这样,我尝试使用“Sub”,它说“关键字没有命名类型”。因此我查看 declare 的原因,因为我似乎可以将 void/sub 作为返回类型返回。

2) 尝试使用类型“CoordinateTuple”和“Accuracy”给我带来了问题,说它们没有定义。我该如何解决这个问题,因为我认为我无法真正定义它们,而且它们是指针这一事实又如何呢?另外 - 我无法以任何方式修改 C++ 代码,所以我拥有的就是我拥有的。

最佳答案

在 VB 中,您可以说 Public Function Whatever (params) As ReturnType(与 C# 中的 public ReturnType Whatever(params) 相同)或 Public Sub Whatever (params) 用于不返回任何内容(在 C++/C# 中返回 void)。

如果您的函数/子函数采用自定义类型,您还需要声明这些类型的 .NET 等价物。这会使 PInvoke 努力工作。 the interop assistant 等工具可以提供帮助。

关于c++ - 在 VB.NET 中使用 DLL 导入/声明以及 .NET 不使用的参数类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3118552/

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