2

我遇到了一个问题,我真的可以告诉你我需要帮助。我有一个库,其中包含我需要的一些方法。但是当我添加它作为参考时,抛出这个错误:

lib.dll 无法添加。请确保该文件是可访问的,并且它是一个有效的组件或 COM 组件。

我可以告诉你,我不知道是用哪种语言写的,但事实并非如此。我在我工作的一个项目中看到有人在 Visual Basic 中将保留词Lib与相同的 Lib 一起使用,这对他来说效果很好。他可以消耗 lib 的资源,但问题是他是用Visual Basic开发的,我对 Visual Basic 一无所知,只知道C#

这就是他所做的:

Public Function Amethod Lib "theDLLfile" (ByVal s as String) As String...

问题是:那能做到吗?如何参考和使用它的方法?Lib这个词有什么作用以及如何使用它?

我在这里真的需要帮助。

小更新:

引用DLL时,url可以是绝对的还是相对的?

4

3 回答 3

3

这是在 VB 中执行 DllImport 的较旧方式。您还忘记了“声明”关键字。VB 代码应该是这样的:

Public Declare Function Amethod Lib "theDLLfile" (ByVal s as String) As String

C# 中的等价物是:

[System.Runtime.InteropServices.DllImport("theDLLfile")]
public static extern string Amethod(string s);

现在在 VB 中执行此操作的常用方法是:

<System.Runtime.InteropServices.DllImport("theDLLfile")>
Public Shared Function Amethod(ByVal s As String) As String
End Function
于 2013-06-13T14:24:19.943 回答
2

听起来该库是本机库(即非托管代码,而不是.NET)。您将需要 P/Invoke 调用它。

您可以在此处找到对此的基本介绍。

您将需要一些附加信息(可能来自您同事的 VB 项目)来正确声明要调用的库函数。

于 2013-06-13T13:09:51.433 回答
2

采用 [DllImport]

例子:

[DllImport("DllFile.dll", EntryPoint = "dllFunctionName"]
public static extern string functionName (string s);
于 2013-06-13T13:12:31.287 回答