這個命題有些意思。
我現在用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...