我有一個工作在一個C#項目,我通過互操作服務呼叫工作的C + + DLL。我創建了另一個C#項目,並試圖調用相同的.dll文件,但不斷收到一條通用的錯誤消息,聲明無法找到.dll,兩個項目都是.net 2.0。什麼文件夾,以及我在項目中指定的位置,我應該放入.dll文件以便項目可以找到它?c#項目找不到C++ .dll?
把它當作我的一個提醒...
在以前的項目中,我並沒有對它的引用,我只是它的/ bin文件夾和做同樣的事情爲這個項目做不行。
感謝R.
我有一個工作在一個C#項目,我通過互操作服務呼叫工作的C + + DLL。我創建了另一個C#項目,並試圖調用相同的.dll文件,但不斷收到一條通用的錯誤消息,聲明無法找到.dll,兩個項目都是.net 2.0。什麼文件夾,以及我在項目中指定的位置,我應該放入.dll文件以便項目可以找到它?c#項目找不到C++ .dll?
把它當作我的一個提醒...
在以前的項目中,我並沒有對它的引用,我只是它的/ bin文件夾和做同樣的事情爲這個項目做不行。
感謝R.
確保所討論的DLL所依賴的所有DLL都與使用該DLL的exe在同一目錄中。
把C++在C#項目的輸出目錄(原生)DLL,Bin \ Debug或使
或者只需添加一個將自動複製DLL的項目引用。 – 2010-05-16 23:08:27
就只要你把你的工作目錄的位置你應該沒有問題的DLL。
轉到Debug選項卡上的項目屬性,並將工作目錄設置爲包含您的DLL的目錄。
我通常將DLL作爲文件添加到項目中,並將其複製到較新的文件中。
C#dll嘗試通過相對路徑訪問unmanged dll的過程與加載dll的任何進程相同 - 也就是說該文件必須與可執行文件位於相同的目錄中,或者位於定義的路徑之一中進程'PATH變量。
爲了讓您的視覺Ssolution做自動爲您有事情號碼,你可以這樣做:
添加非託管的項目爲C#項目的依賴。這會將DLL複製到C#可執行文件的路徑中。
將C++項目的輸出路徑更改爲c#可執行文件的輸出路徑。
構建C++項目並將該dll作爲鏈接添加到C#項目。在其屬性中設置以複製到輸出目錄。
您是否已將C#項目中的項目引用添加到C++項目中? – 2010-05-16 22:54:16
你不能這樣做 – 2010-05-16 23:02:58
@Ion Todriel:我假設他的意思是C++/CLI - 也許我應該更加明確。如果它是本機C++,那麼他不會談論互操作。 – 2010-05-16 23:07:11