我有一个从旧系统导入的项目。 这段代码变得最成问题
PacketGroup = new ArrayList();
Crypto = new GameCrypto(ASCIIEncoding.ASCII.GetBytes(STRING_CRYPTO));
KeyExchance = new OpenSSL.Crypto.DH();
KeyExchance.G = RANDOM_INT;
KeyExchance.P = OpenSSL.Core.BigNumber.FromHexString("KEY__KEY_KEY\0");
KeyExchance.GenerateKeys();
NewServerIV = GenerateIV();
NewClientIV = GenerateIV();
起初我收到错误:
System.TypeInitializationException:' OpenSSL.Native'的类型初始值设定项。日 重新例外。 ---> System.Exception:libeay32.dll的版本无效,期待 0.9.8a开发,获得:1.0.0发布
我在项目中导入了最新的SSL库并得到了这个错误(在线上加密=新GameCrypto())
System.DllNotFoundException:无法加载DLL' libeay32.dll':应用程序无法启动 因为它的并排配置不正确。请参阅应用程序事件日志或使用 命令行sxstrace.exe工具了解更多详情。 (HRESULT异常:0x800736B1)
在PROJECT_NAME.Native.BF_set_key(IntPtr _key,Int32 len,Byte []数据) 在PATH \ Main \ Blowfish.cs中的PROJECT_NAME.Main.Blowfish.SetKey(字节[]数据):第85行 在PATH \ Main \ Blowfish.cs中的PROJECT_NAME.Main.GameCrypto..ctor(Byte []键):第15行 位于PATH \ Main \ GameClient.cs中的PROJECT_NAME.Main.GameClient..ctor(布尔机器人):第48行
我能够解决这个问题而且我遇到了这个问题(在线上新的OpenSSL.Crypto.DH())
System.TypeInitializationException:' OpenSSL.Core.Native'的类型初始值设定项。抛出一个例外。 ---> System.DllNotFoundException:无法加载DLL' ssleay32':操作系统无法运行。 (HRESULT异常:0x800700B6)
在OpenSSL.Core.Native.SSL_library_init() 在OpenSSL.Core.Native..cctor() ---内部异常堆栈跟踪结束--- 在OpenSSL.Core.Native.DH_new() 在OpenSSL.Crypto.DH..ctor() 在PATH \ Main \ GameClient.cs中的PROJECT_NAME.Main.GameClient..ctor(布尔机器人):第49行 System.NullReferenceException:未将对象引用设置为对象的实例。 在PATH \ Main \ GameWorker.cs中的PROJECT_NAME.Main.GameWorker.ConnectionHandler(StateObj S):第33行
答案 0 :(得分:1)
您的应用程序目录中需要libeay32.dll
,libssl32.dll
和ssleay32.dll
的副本
将非托管dll添加为项目中的文件或链接文件。 (右键单击项目 - > gt;添加 - >现有文件,然后添加或添加为链接。
在解决方案资源管理器中选择文件。在属性窗口中设置构建操作以始终复制。
不要忘记非托管DLL本身可能需要其他非托管DLL。如果你忘记添加它们,你可以得到 完全相同的错误。如果您愿意,可以使用依赖性walker来帮助您 不确定依赖是什么。