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

本文关键字:Basic Visual Lib | 更新日期: 2023-09-27 18:18:07

我有一个问题,我真的可以告诉你,我需要帮助。我有一个库,里面有一些我需要的方法。但是当我添加它作为引用时,抛出这个错误:

无法添加

lib.dll。请确保文件是可访问,并且它是有效的程序集或COM组件。

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

他是这样做的:

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

问题是:这能做到吗?如何借鉴和运用其方法?"自由"这个词是什么意思?如何使用?

我真的需要帮助。

小更新:

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

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

这是在VB中做DllImport的老方法。你还忘记了"Declare"关键字。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

使用[DllImport]

的例子:

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

听起来像是一个本机库(即非托管代码,而不是。net)。您需要P/Invoke来调用它。

你可以在这里找到一个基本的介绍。

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