我的代碼使用的庫是一個靜態/隱式鏈接的DLL(我們稱之爲DLLB),但在運行時找不到它。最佳方式來幫助窗口找到我鏈接到的DLL?
儘管將DLLB與調用它的代碼放在同一個目錄中, (調用代碼本身就是一個DLL,它是從python調用的DLLA,它是從arcpy調用的,我不太清楚爲什麼python會發現DLLA很好,但是DLLA沒有找到DLLB,儘管它們在同一個目錄中) 。
如果我把庫DLL放在系統路徑的某個地方,一切正常。
但是部署的最佳方法是什麼?在安裝時向客戶機上的系統路徑添加條目?在加載DLL之前,在運行時從python修改系統路徑?還有別的嗎?
你說得對,我在Python中指定了DLLA的完整路徑。 DLLB是第三方庫,唉,我不認爲支持動態加載。這留下了什麼是最好做的問題 - 修改系統路徑?我可以以某種方式做到這一點只是爲了Python,它的DLL加載? –
您可以隨時動態加載DLL。 (好吧,幾乎總是)。最可能的問題是,將DLLA中的代碼改爲使用顯式而非隱式加載可能太難了。我認爲最好的解決方案是在加載DLLA之前從Python *顯式加載DLLB。然後隱式加載將找到正確的DLL,因爲它已經在內存中。但是,您可以使用'os.environ'映射對象修改該進程的PATH環境變量。您可能想要將目錄預先設置爲PATH,但要確保沒有任何內容會發生衝突。 –
啊哈! http://msdn.microsoft.com/en-us/library/784bt7z7%28v=vs.100%29.aspx –