簡體   English   中英

C#中的C ++ dll

[英]C++ dll within c#

我有如下的C ++ DLL

#include "stdafx.h"


extern "C" __declspec(dllexport)double Add(double a, double b);


extern double Add(double a, double b) 
{ 
    return a + b; 
} 

n在這里我試圖將此DLL與我的C#應用​​程序鏈接

using System.Text;

using System.Runtime.InteropServices; 

namespace test
{

    class Program

    {

        [DllImport("DLL.dll", CallingConvention = CallingConvention.Cdecl)]

        public static extern double Add(double a, double b);  


        static void Main(string[] args)

        {




            Console.WriteLine(Add(1.0, 3.0)); // error here


            Console.ReadLine(); 

        }
    }
}

我得到錯誤:

“無法加載DLL'DLL.dll':找不到指定的模塊。(HRESULT異常:0x8007007E)”

請幫幫我...如何將C ++ DLL與C#鏈接?

調用約定確定在函數調用之前如何將函數參數放置在堆棧上,以及在函數返回時如何將其刪除(調用者與被調用者)。 您可以在大約一百萬個StackOverflow問題中找到有關此問題的更多信息,或者轉到此處閱讀一些內容。

關於您正在編寫的C#(aka .NET)應用程序所能訪問的DLL的位置,恐怕我無法對此發表評論,除非說通用DLL必須位於當前的lib-search路徑(Windows中的PATH)中。目錄,或內核的主目錄(一般為C:\\ Windows \\ System32下不將文件復制到system32下,順便說一句只安裝您的應用程序到您的DLL駐留在目錄“從運行”,你應該罰款也例外為此,以及可以從根本上改變這一點的配置設置,但是現在我還是堅持簡單,復雜總是會在以后出現。

您將需要將dll植入與C#exe相同的位置,或者將dll打包在exe中。 第一種選擇很簡單。 對於第二個選項,請在Visual C#2010中簽出將DLL嵌入到.exe中。

您收到此錯誤,因為DLL.dll不在您的調試/發布文件夾中,

據我所知,Visual Studio不知道如何手動將這些文件復制到輸出文件夾。

將dll文件添加到您的C#解決方案

然后在files properties上將build action設置為content ,並將copy to output directory設置copy to output directorycopy if newer copy to output directorycopy if newer則將自動進行復制)

暫無
暫無

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

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