2016-07-25 125 views
0

對於我正在開發的項目,我需要解決一個數學模型。我選擇使用Microsoft.Solver.Foundation和SolverFoundation.Plugin.LpSolve插件來完成此操作。這兩個擴展名相關的.dll文件似乎工作正常,因爲VS2015能夠毫無問題地識別並引用它們,並且編譯和運行我的程序時沒有錯誤。無法在64位操作系統的VS2015中加載「lpsolve55.dll」

但是,直到我試圖實際解決我的優化,它需要「lpsolve55.dll」才能正常工作。我已經下載了這個DLL並將其放入我的項目的bin/Debug文件夾中,但出於某種原因,VS2015無法識別它。即

  • 我不能通過從我的「添加引用」選項卡中簡單地瀏覽它來引用它。
  • 由於它沒有任何DLL(Un-)註冊表入口點,因此無法通過regsvr32 cmd-prompt應用程序(un-)註冊它。
  • TlbImp.exe cmd-prompt應用程序無法處理它。

所以基本上,發現上述(嘗試最常見的互聯網解決方案之後),我仍然覺得頗爲不滿得到錯誤信息,而我試圖解決優化後 -

無法加載DLL'lpsolve55.dll':無法找到指定的模塊。 (異常來自HRESULT:0x8007007E)

的怪異部分也是我在我解決了類似的問題,那裏絕對沒有使用lpsolve55.dll在所有問題的另一個項目....

一些簡單的事實:

  • 我參考.NET framwork 4.5.2。我已將其更改爲4.5以及4.0,但這並沒有改變。
  • 就我所知,我的項目的bin/debug文件夾是相同的。
  • 我工作的全面更新的Windows 10操作系統,64位,而使用的Visual Studio 2015

我的問題將因此被否你們有些人遇到了類似的問題,如果你能以某種方式解決它。

非常感謝!

+1

如果'lpsolve55.dll'是一個32位的dll,則可能需要將項目編譯爲32位項目。 –

+1

以及您如何從代碼訪問該dll?你使用'[DllImport]'?它是否被另一個你使用的dll所使用? –

+0

謝謝你和我一起思考。至於32位的可能性,我不認爲這是一個問題。另一個項目以「任何CPU」模式構建,以及我目前正在開發的項目,並且就設置而言沒有編譯器差異。 至於Dllimprot,我不使用它,因爲lpsolve55.dll被其他項目之一引用(我相信它是SolverFoundation.Plugin.LpSolve,它被完美地識別了,也許我可以看到如何使它找到LpSolve55,但我相信這是一個對我的特定DLL不是唯一的錯誤。 –

回答

0

經過一番仔細分析後,我找到了問題的答案。說實話,就像大多數情況一樣,最後它非常簡單。 lpsolve55.dll未被識別,因爲我沒有在路徑中使用我的新bin文件夾,而我在舊項目中使用了該文件夾。我只是忘了。

但是,在進一步的說明中,在將lpsolve55.dll目錄添加到路徑後,我仍然收到一個錯誤,告訴我沒有可以解決我的指令的模型。由於錯誤,當我打電話的LPSolverDirective()發生,一些研究登陸我下面的頁面上:

http://lpsolve.sourceforge.net/5.5/MSF.htm

上述網頁提供瞭如何使用直的LPSolverPlugin進入電影lpsolve55.dll完整和穩定的方式出Microsoft.Solver.Foundation.dll。按照鏈接中涉及編輯我的項目的bin/Debug和bin/Release文件夾的方法後,我立即啓動並運行LP模型。

故事的士氣 - 閱讀文檔。我在編寫完整的多項目解決方案和使用自定義添加的dll方面有點初學者,但希望這可以幫助其他人經歷相同的情況。最後,我通過簡單地嘗試不同的方法來獲得它,從而學到了很多東西,所以沒有浪費時間。

相關問題