如何解决"原生DLL libmbusmaster.dll缺失的问题!请将DLL文件部署到与mbusmaster.net.dll相同的目录中。"

时间:2015-03-27 12:34:50

标签: c# c++ .net dll

我在.Net中使用了FieldTalk Modbus。当我运行应用程序时,我在为MbusTcpMasterProtocol创建对象时遇到错误。

  

MbusTcpMasterProtocol mbusProtocol = new MbusTcpMasterProtocol();

错误是:

缺少原生DLL libmbusmaster.dll! 请将DLL文件部署到与mbusmaster.net.dll相同的目录中。

我将libmbusmaster.dll作为“ExistingItem”添加到项目中,并将mbusmaster.net.dll作为对项目的参考。

2 个答案:

答案 0 :(得分:0)

添加" libmbusmaster.dll"你的项目没有将它添加到同一个文件夹中" mbusmaster.dll"位于。您指定的mbusmater.dll位于" debug"夹。当你添加" libmbusmaster.dll"对于您的项目,它可能已添加到项目的根文件夹中(而不是调试)。要将其添加到调试中,请转到" libmbusmaster.dll"的属性。在您的解决方案中,选择"始终复制"或者"如果更新则复制"。

答案 1 :(得分:0)

mbusmaster.net.dll使用相对dll导入[DllImport("libmbusmaster.dll")]

这意味着它将尝试从条目程序集所在的加载libmbusmaster.dll 而不是mbusmaster.net.dll所在的位置

对于大多数程序,条目汇编路径和mbusmaster.net.dll路径将是相同的。但是,如果您有一个应用程序说,从其他文件夹加载插件,并且插件使用这些程序集,插件将必须使用描述的https://tspace.library.utoronto.ca/handle/1807/10437

的SetDllLocation技术