首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Libsodium无法加载DLL的libsodium.dll

Libsodium无法加载DLL的libsodium.dll
EN

Stack Overflow用户
提问于 2016-05-20 13:11:17
回答 2查看 7.9K关注 0票数 10

我通过NuGet安装了Libsodium,并且能够在我的类中包含钠,但是当我尝试运行它时,我得到了

“System.DllNotFoundException”类型的异常发生在Sodium.dll中,但未在用户代码中处理

其他信息:无法加载DLL 'libsodium.dll':找不到指定的模块。(HRESULT例外: 0x8007007E)

我只是尝试从gitbook文档hashing/index.html中运行示例代码。

代码语言:javascript
复制
const string PASSWORD = "Correct Horse Battery Staple";
const string SALT = "qa~t](84z<1t<1oz:ik.@IRNyhG=8q(o";
const long OUTPUT_LENGTH = 512;

//this will produce a 512 byte hash
var hash = PasswordHash.ScryptHashBinary(PASSWORD, SALT,      PasswordHash.Strength.Medium, OUTPUT_LENGTH);
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-05-30 13:22:41

我有同样的问题,并解决了它使用Jørn Wildt's answer given here

事实证明,ASP.NET不会复制非托管DLL,如libsodium.dll和libna-64.dll。 Sodium.dll (托管代码)尝试从与Sodium.dll的影子副本相同的目录加载DLL(这是行不通的),或者在PATH环境变量的目录中加载DLL。 我的解决方案是在调用任何钠代码之前将AppDomain \Bin目录添加到路径中: string path = Environment.GetEnvironmentVariable(" path ");string binDir =Environment.GetEnvironmentVariable“Bin”;Environment.SetEnvironmentVariable("PATH",path+ ";“+ binDir);

正如鲁本对答案的评论一样,我在我的Application_Start Global.asax方法中添加了上面的代码。

票数 13
EN

Stack Overflow用户

发布于 2017-07-13 10:39:53

我也有这个。解决方案的第一部分是像@NiklasEkman那样,将目录添加到PATH变量中。

但是,在我们的QA环境中部署时,我得到了完全相同的错误。在花了几个小时处理权限之后,试图找出dll是否在正确的目录中,类似地,我遇到了这样的帖子:https://mspcontrol.org/forums/topic/add-user-error-unable-to-load-dll-libsodium-64-dll/#post-4765

您必须安装Visual 2015的VisualC++可再发行版(13 Mb) https://www.microsoft.com/en-us/download/details.aspx?id=48145

最终为我解决了这个问题。

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37347620

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档