簡體   English   中英

向 C# asp.net 項目添加 DLL 引用后如何調用函數

[英]How to call functions after adding DLL reference to a C# asp.net project

我有一個名為“MathLibrary”的 C++ dll 項目和一個名為“WebApplication1”的 C# asp.net 項目。 我將項目“MathLibrary”添加到“WebApplication1”中,然后添加了對MathLibrary.dll的引用(如圖所示)。 但我無法從 MathLibrary.dll 調用函數。 我雖然必須在 .cs 文件的頂部添加“使用 MathLibrary”,但無法識別名稱。 如何從 MathLibrary.dll 調用函數?

網絡應用1

數學圖書館.h

管理

如果 MathLibrary.dll 是 .NET 程序集,您可以通過以下方式解決問題:

  • 在解決方案資源管理器(右側)中,找到“WebApplication1”並右鍵單擊“references”節點。
  • 選擇“添加引用”,然后選擇“項目”(在左側),然后選擇“MathLibrary.dll”。

非托管

但是,從表面上看,MathLibrary.dll 不是 .NET 程序集。 它似乎是一個標准的 Win32 DLL(我可以從declspec(dllexport)的使用中看出),這意味着它包含非托管代碼和一系列符號和入口點(與公開類型的 .NET 程序集 DLL 相反) . 如果是這種情況,設置參考將無濟於事。 使用 DLL 需要一個特殊的過程,因為它是非托管的。

要了解如何從 .NET 使用 ummanaged DLL,請參閱此文章

重要的一點是:

使用 DllImportAttribute 來標識 DLL 和函數。 使用 static 和 extern 修飾符標記方法。

您的 C# 代碼可能如下所示:

namespace WebApplication1
{
    class ExternalFunctions
    {
        [DllImport("MathLibrary.dll")]
        public static extern bool fibonacci_next();
    }

    class Program
    {
        static void Main()
        {
            //call it
            var foo = ExternalFunctions.fibonacci_next();
        }
    }
}

如果您遇到上述問題,您可能需要修改 MathLibrary.dll 導出其符號的方式(您必須使用extern "C" )。

另請參閱Extern在 C# 中如何工作? .

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM