2010-05-16 65 views
0

我有一個工作在一個C#項目,我通過互操作服務呼叫工作的C + + DLL。我創建了另一個C#項目,並試圖調用相同的.dll文件,但不斷收到一條通用的錯誤消息,聲明無法找到.dll,兩個項目都是.net 2.0。什麼文件夾,以及我在項目中指定的位置,我應該放入.dll文件以便項目可以找到它?c#項目找不到C++ .dll?

把它當作我的一個提醒...

在以前的項目中,我並沒有對它的引用,我只是它的/ bin文件夾和做同樣的事情爲這個項目做不行。

感謝R.

+0

您是否已將C#項目中的項目引用添加到C++項目中? – 2010-05-16 22:54:16

+0

你不能這樣做 – 2010-05-16 23:02:58

+0

@Ion Todriel:我假設他的意思是C++/CLI - 也許我應該更加明確。如果它是本機C++,那麼他不會談論互操作。 – 2010-05-16 23:07:11

回答

2

確保所討論的DLL所依賴的所有DLL都與使用該DLL的exe在同一目錄中。

0

把C++在C#項目的輸出目錄(原生)DLL,Bin \ Debug或使

+1

或者只需添加一個將自動複製DLL的項目引用。 – 2010-05-16 23:08:27

0

就只要你把你的工作目錄的位置你應該沒有問題的DLL。

轉到Debug選項卡上的項目屬性,並將工作目錄設置爲包含您的DLL的目錄。

0

我通常將DLL作爲文件添加到項目中,並將其複製到較新的文件中。

0

C#dll嘗試通過相對路徑訪問unmanged dll的過程與加載dll的任何進程相同 - 也就是說該文件必須與可執行文件位於相同的目錄中,或者位於定義的路徑之一中進程'PATH變量。

爲了讓您的視覺Ssolution做自動爲您有事情號碼,你可以這樣做:

  1. 添加非託管的項目爲C#項目的依賴。這會將DLL複製到C#可執行文件的路徑中。

  2. 將C++項目的輸出路徑更改爲c#可執行文件的輸出路徑。

  3. 構建C++項目並將該dll作爲鏈接添加到C#項目。在其屬性中設置以複製到輸出目錄。