如何在C#中使用像Visual Basic这样的Lib

时间:2013-06-13 12:41:43

标签: c# vb.net dll

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

  

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

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

这就是他所做的:

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

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

我真的需要帮助。

LITTLE UPDATE:

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

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

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

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

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

答案 2 :(得分:2)

使用[DllImport]

示例:

[DllImport("DllFile.dll", EntryPoint = "dllFunctionName"]
public static extern string functionName (string s);