2011-05-11 12 views
4

我打電話從C#以下:當使用pinvoke時,只有提供了dll名稱時,dll的基本路徑是什麼?

[DllImport("u3dapi10.dll", CharSet=CharSet.Auto)] 
public static extern uint dapiCreateSession(out uint hSession); 

位置是.NET尋找u3dapi10.dll文件?這是以前工作,但現在我得到一個DLLNotFoundException。

u3dapi10.dll文件位於項目的根目錄中。我試圖將它複製到bin/debug目錄,以查看會發生什麼,但是它在那裏也找不到它。

可能的原因: 這可能是由於u3dapi10.dll不是64位兼容?例如如果您嘗試從64位機器訪問32位dll,是否會拋出DllNotFoundException?還是會拋出一個BadImageFormatException通過BadImageFormatException when loading 32 bit DLL, target is x86

+1

似乎是一個重複:http://stackoverflow.com/questions/2411736/p- invoke-dynamic-dll-search-path – 2011-05-11 21:12:49

+0

這個問題確實回答了我的問題的第一部分,它是否也可能是由32位/ 64位問題引起的? – Jason 2011-05-11 21:14:41

+0

我剛剛在一次測試中遇到了由於錯誤的DLL位錯導致的錯誤,我正在運行....並且,可悲的是,我無法記住它引起的異常。我*認爲*這是一種「壞圖像」風格的例外,但我不會就這種糟糕的回憶嘗試做出任何決定。我需要升級內存。 – 2011-05-11 21:54:59

回答

相關問題