Unable to load binary "libzmq" from folders

背景:

需要对接第三方软件的数据服务, 第三方数据服务采用ZeroMq进行消息推送。

采用NetCore控制台程序完成。

开发环境:

通过NuGet在项目中获取ZeroMq库,依赖库报如下图警告:

[ 已使用“.NETFramework,Version=v4.6.1”而不是项目目标框架“.NETCoreApp,Version=v2.1”还原包“ZeroMQ 4.1.0.31”。此包可能与项目不完全兼容。 ]

 开发环境运行一切正常。

正式服务环境:Windows Server 2016运行报错

System.TypeInitializationException: The type initializer for 'ZeroMQ.lib.zmq' threw an exception. ---> System.IO.FileNotFoundException: UnmanagedLibrary[libzmq] Unable to load binary "libzmq" from folders
C:\Windows\system32\libzmq.dll
C:\Users\Administrator\Desktop\20191031_0945\StockGetApi20191031-001\StockGetApi\StockMarketRedisServer-001\libzmq.dll
C:\Windows\system32\libzmq.dll
C:\Windows\libzmq.dll
C:\Windows\System32\Wbem\libzmq.dll
C:\Windows\System32\WindowsPowerShell\v1.0\libzmq.dll
C:\Program Files\dotnet\libzmq.dll
C:\Program Files (x86)\dotnet\libzmq.dll
C:\Users\Administrator\AppData\Local\Microsoft\WindowsApps\libzmq.dll
C:\Users\Administrator\Desktop\20191031_0945\StockGetApi20191031-001\StockGetApi\StockMarketRedisServer-001\amd64\libzmq.dll
C:\Users\Administrator\Desktop\20191031_0945\StockGetApi20191031-001\StockGetApi\StockMarketRedisServer-001\x64\libzmq.dll
Also unable to load binary from EmbeddedResource "ZeroMQ.libzmq.amd64.dll", from temporary path "C:\Users\Administrator\AppData\Local\Temp\2\ZeroMQ.libzmq.amd64.dll". See Trace output for more information.
at ZeroMQ.lib.Platform.Win32.LoadUnmanagedLibrary(String libraryName)
at ZeroMQ.lib.zmq..cctor()
--- End of inner exception stack trace ---
at ZeroMQ.ZContext..ctor()

刚开始在度娘上采用 https://blog.csdn.net/weixin_33874713/article/details/91529964 这个方法, 未能解决。

最后 参考 https://www.cnblogs.com/EddyPeng/p/3158969.html 的方法, 得以解决

先对以上两位仁兄的方法表示感谢,下面说明我的解决结果,给大家参考,以便大家遇到同样问题能搜索到,也给自己做个记录。

1.从http://www.dependencywalker.com/下载Dependency库

2.在服务器运行,查看libzmq.dll库的依赖库,发现缺少msvcp140.dll,vcruntime140.dll两个库,如下图:

3.在开发电脑查找这两个库,放到运行环境的c:\windows\system32目录,问题解决。

猜你喜欢

转载自www.cnblogs.com/Seiya-Lelliao/p/11775183.html
今日推荐