如何實現 對跨目錄Dll的動態載入?

2021-05-22 08:47:57 字數 725 閱讀 3937

這個命題有些意思。

我現在用vc編寫乙個動態鏈結庫, 應用程式設定好相對路徑呼叫我寫的dll, 而我的dll 又呼叫了別的dll,我呼叫的dll和我寫的dll是在同乙個目錄下的,請問我在編寫dll時用loadlibrary()載入其他的dll的時候怎麼解決這個路徑問題,謝謝 問題補充:請問 我再dll 寫 bstr[100]; getcurrentdir(bstr); 可是提示 不認識這函式 ,謝謝

你在問題補充裡面說的非常正確

你需要通過改變工作目錄(work path)來使得你的dll能夠正確的載入別人的dll,我也遇到過這個問題

根據你說的情況,你應該這樣

1 用getcurrentdir儲存當前的工作目錄

2 用setcurrentdir將當前的工作目錄,設定為你的dll所在的路徑,需要使用絕對路徑

3 用loadlibrary你的dll

4 使用setcurrentdir恢復到原來的工作路徑

其實這個問題,本身很簡單,說白了只要有人告訴你,有個windows api函式叫"

setcurrentdir",你就功成一半。

說簡單,他不要太簡單;可是你要不知道有這麼個函式,你就覺得異常的難。

當時我碰到這個問題,就很痛苦。為啥,就因為咱不知道有這麼個套路。

凡事有套路,也就是原則和規律。比如,我比較看重的設計模式一類。

說白了,也是個經驗套路的話題罷了。

你去看了,就能做到相對的先人一步,勝人一籌。

pycharm如何實現跨目錄呼叫檔案

筆者今天在乙個測試qq群中遇到解決跨目錄中呼叫檔案的問題。現在來總結一下。以下圖目錄為例 1 同目錄下直接呼叫掉用。test2.py和test3.py在同乙個目錄test2下。所以在test3.py呼叫test2.py可以直接呼叫的 import test2即可使用test2中所有的方法 2 跨目錄...

c 跨動態庫DLL的記憶體分配與釋放問題

先說結論 1 如果兩個dll 或者exe呼叫dll 的crt鏈結均為md,則可以跨動態庫分配和釋放,如果乙個是mt,另外乙個是md則會有問題。2 利用虛函式的動態繫結技術,動態繫結分配釋放記憶體的new和delete等,可以解決這個問題,例如shared ptr。但如果shared ptr包裝是ve...

如何讓程式識別不同目錄下的dll

我們看到,上面的順序無論是否有強名稱簽名看,都提到了乙個名詞 私有目錄 推薦 這是最簡單的方法,當然也有一定的侷限性,就是沒法對dll做控制,另外,無法解決第三方dllimprt中引入的程式集不在根目錄下的問題,不過無論怎麼說,這個都基本解決了問題。配置如下,多個目錄用 分隔 xmlns urn s...