簡體   English   中英

C ++與Visual Studio 2017-在加載時動態鏈接時操縱庫搜索順序

[英]C++ with Visual Studio 2017 - manipulate the library search order when load-time dynamic linking

我在Windows上有一個用MSVC編譯的C ++應用程序,該應用程序在運行時鏈接到許多dll。 該應用程序具有Excel前端:.xll文件,用戶可以將其加載到excel中。 用戶應該能夠從任何位置加載xll。

所有的dll都位於共享驅動器上,並且沒有用戶將此位置添加到他/她的Windows路徑變量中(我不希望那樣,因為這些dll可能與其他程序沖突)。 我編寫了該應用程序,以便在啟動該應用程序時,在本地更改Windows路徑變量(僅在運行該應用程序的會話中)以包括這些dll的路徑。

這只能起作用,因為在我的Visual Studio解決方案中,我可以指定這些dll應該延遲加載(運行時動態加載)。

這是我的問題:我想將boost-python用於python前端。 Boost python會在應用程序啟動時(加載時鏈接)強制我的應用程序加載python27.dll,即沒有延遲。

我實際上嘗試了延遲連接,並收到以下錯誤:1> LINK:致命錯誤LNK1194:由於導入了數據符號“ __imp___Py_NoneStruct”,無法延遲加載“ python27.dll”; 鏈接不帶/DELAYLOAD:python27.dll

我的問題是我是否可以從應用程序內部以某種方式修改加載時間搜索路徑?

請注意,所有使用Excel前端的用戶均不打算使用python前端(這是供另一組用戶使用的),因此我無法確定那些Excel用戶已安裝python,尤其是未安裝python版本的用戶。 2.7。

預先感謝,內爾

您無法從應用程序內部修改加載時間搜索路徑,因為尚未加載您的應用程序以執行任何操作。 最好的辦法是使用某種類型的包裝程序,例如將設置環境的批處理文件或其他腳本,或者將具有完全限定路徑的DLL鏈接到網絡共享。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM