2016-07-25 211 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方面有点初学者,但希望这可以帮助其他人经历相同的情况。最后,我通过简单地尝试不同的方法来获得它,从而学到了很多东西,所以没有浪费时间。

相关问题