DllImport路徑問題

2021-06-04 11:03:17 字數 795 閱讀 7385

1、dll檔案必須位於程式當前目錄或系統定義的查詢路徑中(即:系統環境變數中path所設定的路徑)。

2、dllimport會按照順序去查詢dll檔案(程式當前目錄》system32目錄》環境變數path所設定路徑)。

3、返回型別變數、方法名稱、引數列表一定要與dll檔案中的定義相一致。

4、asp.net dllimport路徑----使用第三方非託管的dll(charles.dll)元件的時候,當把charles.dll拷貝到bin目錄下,提示仍然提示仍然找不到該dll.(而這樣[dllimport(@「c:\programdir\charles.dll」)]可以正常載入)。asp.net team的官方解決方案如下:

首先需要確認引用了哪些元件?哪些是託管的?那些是非託管的?

託管的很方便,直接被使用的需要引用,間接使用的需要拷貝到bin目錄下。非託管的就特殊處理(實際上你拷貝到bin是沒有任何作用的,因為clr會把檔案拷貝到乙個臨時目錄下,然後在那執行web,而clr只會拷貝託管檔案,這就是為什麼把非託管的dll放到bin目錄下仍然提示找不到該模組)。

解決方案:首先在伺服器上建立乙個新建的目錄,假設是(c:\programdir\windll\).然後在環境變數中,給path變數新增這個目錄,最後把非託管的dll檔案都拷貝到該目錄下。或者更乾脆把dll放到system32目錄中。對於自己部署的應用程式,這樣的確能很好的解決問題。然而如果我們用的是虛擬空間,我們有沒有辦法吧註冊path變數或者把我們自己的dll拷貝system32目錄下。同時我們也不一定知道我們dll的物理路徑.

dllimport與dllexport作用與區別

declspec dllexport 與 declspec dllimport declspec dllexport 與 declspec dllimport 是相互呼應,只有在dll內部用dllexport作了宣告,才能 在外部函式中用dllimport匯入相關 實際上,在應用程式訪問dll時,實...

dllimport與dllexport作用與區別

declspec dllexport 與 declspec dllimport declspec dllexport 與 declspec dllimport 是相互呼應,只有在dll內部用dllexport作了宣告,才能 在外部函式中用dllimport匯入相關 實際上,在應用程式訪問dll時,實...

dllexport和dllimport的區別

declspec dllexport 宣告乙個匯出函式,是說這個函式要從本dll匯出。我要給別人用。一般用於dll中省掉在def檔案中手工定義匯出哪些函式的乙個方法。當然,如果你的dll裡全是c 的類的話,你無法在def裡指定匯出的函式,只能用 declspec dllexport 匯出類 decl...