.NET dll訪問中的一個問題

來源:互聯網
上載者:User

最近項目開發中碰到的,沒有找到微軟相關的document,不知道是不是未存檔的,所以在這裡說一下。

情況是這樣的,有一堆dll放在目錄A,另外一個exe程式放在目錄B。目錄A當中dll有些是clr支援的,有些是純win32的。這些win32 dll之間通過隱式調用(.h標頭檔&.lib檔案)時一切正常,但是如果是通過LoadLibrary或者相關的函數顯式調用則必須指定dll檔案的完整路徑,否則儘管它們都在同一個目錄A中,運行時系統也只會去搜尋exe所在的目錄B,因為在目錄B中找不到指定檔案名稱的dll將發生系統錯誤。解決方案最簡單的就是利用SetDllDirectory函數動態添加目錄A到系統搜尋目錄中。

另外,經過實驗,.NET 3.5(VS2008Beta2)中ms已經解決了這個問題,將caller dll所在目錄預設已經加入到了callee dll的搜尋路徑中,這樣直接就可以通過檔案名稱調用了。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.