Please read Wiki carefully, especially https://github.com/shadowsocks/shadowsocks-windows/wiki/Troubleshooting.
Please answer these questions before submitting your issue. Thanks!
Shadowsocks 4.0.8.0
OS 名称: Microsoft Windows 10 专业版
OS 版本: 10.0.16299 暂缺 Build 16299
程序正常启动, 试图发起连接的时候发生错误.
[2018-02-16 11:34:03] Shadowsocks started
[2018-02-16 11:34:03]
=========================
Registered Encryptor Info
aes-128-cfb=>StreamOpenSSLEncryptor
aes-192-cfb=>StreamOpenSSLEncryptor
aes-256-cfb=>StreamOpenSSLEncryptor
aes-128-ctr=>StreamOpenSSLEncryptor
aes-192-ctr=>StreamOpenSSLEncryptor
aes-256-ctr=>StreamOpenSSLEncryptor
bf-cfb=>StreamOpenSSLEncryptor
camellia-128-cfb=>StreamOpenSSLEncryptor
camellia-192-cfb=>StreamOpenSSLEncryptor
camellia-256-cfb=>StreamOpenSSLEncryptor
rc4-md5=>StreamOpenSSLEncryptor
salsa20=>StreamSodiumEncryptor
chacha20=>StreamSodiumEncryptor
chacha20-ietf=>StreamSodiumEncryptor
aes-128-gcm=>AEADOpenSSLEncryptor
aes-192-gcm=>AEADOpenSSLEncryptor
aes-256-gcm=>AEADOpenSSLEncryptor
chacha20-ietf-poly1305=>AEADOpenSSLEncryptor
=========================
[2018-02-16 11:34:26] System.DllNotFoundException: 无法加载 DLL“libcrypto-1_1.dll”: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E)。
在 Shadowsocks.Encryption.OpenSSL.EVP_get_cipherbyname(Byte[] name)
在 Shadowsocks.Encryption.OpenSSL.GetCipherInfo(String cipherName)
在 Shadowsocks.Encryption.Stream.StreamOpenSSLEncryptor.initCipher(Byte[] iv, Boolean isEncrypt)
在 Shadowsocks.Encryption.Stream.StreamEncryptor.Encrypt(Byte[] buf, Int32 length, Byte[] outbuf, Int32& outlength)
在 Shadowsocks.Controller.TCPHandler.SendToServer(Int32 length, AsyncSession session)
在 Shadowsocks.Controller.TCPHandler.StartPipe(AsyncSession session)
[2018-02-16 11:34:26] System.DllNotFoundException: 无法加载 DLL“libcrypto-1_1.dll”: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E)。
在 Shadowsocks.Encryption.OpenSSL.EVP_get_cipherbyname(Byte[] name)
在 Shadowsocks.Encryption.OpenSSL.GetCipherInfo(String cipherName)
在 Shadowsocks.Encryption.Stream.StreamOpenSSLEncryptor.initCipher(Byte[] iv, Boolean isEncrypt)
在 Shadowsocks.Encryption.Stream.StreamEncryptor.Encrypt(Byte[] buf, Int32 length, Byte[] outbuf, Int32& outlength)
在 Shadowsocks.Controller.TCPHandler.SendToServer(Int32 length, AsyncSession session)
在 Shadowsocks.Controller.TCPHandler.StartPipe(AsyncSession session)
ss_win_temp下有libcrypto-1_1.dll文件生成吗?
另外需要安装VC运行库,因为需要VCRUNTIME140.dll https://github.com/shadowsocks/shadowsocks-windows/pull/1671#issuecomment-364612238
Microsoft Visual C++ 2015 Redistributable Update 3
https://www.microsoft.com/en-us/download/details.aspx?id=53840
模块文件生成了,VC运行库安装了
[2018-02-16 14:23:21] System.DllNotFoundException: Unable to load DLL 'libcrypto-1_1.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)
Microsoft Visual C++ 2008 2012 2013 2015 都已经安装
生成了 libcrypto-1_1.dll文件
Please disable antivirus and try again.
Not work. 仍然报错 System.DllNotFoundException: Unable to load DLL 'libcrypto-1_1.dll'
请尝试将Shadowsocks.exe单独放到一个新的目录中,比如 D:\SS\ 目录看看?
我这儿 Windows 7 SP1 x64 和 Windows 10 16299.248 x64 都没有问题。
EDIT:不工作。
简而言之:需要安装 Microsoft Visual C++ 2015 Redistributable Update 3 所提供的 vc_redist.x86.exe 。
很凑巧,网友“dz”也遇到了该问题,在他的配合下,找到了问题和办法:
该问题仅存在于使用AEAD算法的服务端,如果不连接的话,仅选择使用AEAD的服务器不会触发此问题,必须得实际通过该服务器访问一下才会出错。
如果没装Microsoft Visual C++ 2015 Redistributable Update 3的情况下,使用SS连接AEAD算法的服务器会遇到找不到 VCRUNTIME140.DLL 的提示。
如果只安装了 vc_redist.x64.exe 则会遇到 Unable to load DLL 'libcrypto-1_1.dll' 的提示。
安装 vc_redist.x86.exe 后一切正常了。
请楼上几位测试一下,看看能否解决问题,Microsoft Visual C++ 2015 Redistributable Update 3的下载地址在三楼。
问题解决了.
从4.07升级到4.08 我也遇到了和楼主一样的问题
只有安装Microsoft Visual C++ 2015 Redistributable Update 3 x86后才正常
是有点麻烦
不知道新程序用了哪些新特征 需要用到VC++2015?
能否将需要的文件一起打包?可以省事很多 我的同事不懂电脑 来问我 我说要下载VC++2015 他们不知道哪里去找
@chenshaoju
多谢提示, 之前别的软件也遇见, 只需要msvcp140.dll, vcruntime140.dll, msvcr120.dll.
拷贝过来就OK
安装 vc_redist.x86.exe 后问题解决!
Thanks!
@chenshaoju
需要安装 Microsoft Visual C++ 2015 Redistributable Update 3 所提供的 vc_redist.x86.exe
应该是由于整个项目依旧在使用x86target,所以dll也是32位的
@aglent
OpenSSL(libcrypto-1_1.dll)的实现具备了硬件加速能力,能提升加密解密性能。但是这个dll依赖vc运行库。然而和本软件2MB的体积相比,直接打包运行库会显得有点大。
Reopen this issue for other users' reference
@celeron533 在一些旧案例中,程序发布时可以将所需的运行库打包进去,比如一些应用所在目录下的 Microsoft.VC90.CRT 目录,或者直接附带上 msvcm90.dll 、 msvcp90.dll 、 msvcr90.dll 等等。
我不知道SS是否也可以这样做?版权上应该没什么问题,一些开源软件,比如 Blender ,也是打包了这些文件。
更新一下README.md requirement吧,或者在压缩包内增加一个说明文件。
有两个选择
一是静态库,链接到libsscrypto,这样不会有附加依赖,缺点是不能受益底层更新,微软不推荐
二是动态库,鉴于心脏出血案例把它分离出来,可随时更新,缺点依赖多
权衡之后选择了目前的方案。如果你玩游戏什么的,这些运行库都不是问题,其他的都能用得上
@celeron533 这是说4.08之前的版本都没有实现AES硬件加速?
是的
之前只有aes256gcm有aes硬件加速,来源于libsodium,mbedtls用msvc编译没有aes硬件加速,在linux下才有aesni
Win10 1709 x64 下 只要把vcruntime140.dll放入目录就可以正常运行了
@wongsyrone 你的解释我没看明白 是不是linux下都实现了aes硬件加密 win下必须调用了openssl 1.1.0g才能实现?
你读mbedtls代码就知道了
静态库能解决这类问题,不过由于静态链接进去了,要更新只能整个 exe 一起更新。不过其实按照本项目的性质,个人觉得静态库应该会比动态库好,毕竟一般不会特意用一个旧的版本,这样维护者编译时保证是最新版本就行。
It will use static OpenSSL now, see https://github.com/shadowsocks/shadowsocks-windows/pull/1700
原来这里有解决方案啊……
安装 vc_redist.x86.exe 解决了!!!!!!!!!!!
win10 x64 安装 vc_redist.x86.exe 解决
感谢 @chenshaoju 出厂win10 x64 安装 vc_redist.x86.exe 解决 https://github.com/shadowsocks/shadowsocks-windows/issues/1679#issuecomment-366141950
安装 Microsoft Visual C++ 2015 Redistributable (x86)
注意是X86 不是 X64
WIN 7系统 Microsoft Visual C++ 2008 2010 2012 2013 2015 x86 x64都已经安装
仍然报错 System.DllNotFoundException: Unable to load DLL 'libcrypto-1_1.dll'
请尝试再次安装 VC++ 2015 x86 https://www.microsoft.com/en-us/download/details.aspx?id=53840
安装的时候请选择修复安装。
某些系统可能需要重新启动。
https://www.upload.ee/files/8213603/Shadowsocks-4.0.9.zip.html
整合必须文件打包, win10未测试
4.09版本打开报错System.DllNotFoundException: Unable to load DLL 'libcrypto-1_1.dll'
4.06版本前两次打开可以正常使用,但是现在开启全局代理后报错500 Internal Privoxy Error,无法上网
目前测试结果可能是因为多个用户使用导致,请问多个用户使用的话如何避免这种问题
@EugeneYX 建议为每个用户设置一个独立的SS目录,并监听在不同的端口上。
或者只有一个人能用SS,然后其他人都将代理指向同一个端口上。
另外,是否已经修复安装并重新启动计算机?
并未重启计算机,可以正常翻墙的计算机重启shadowsocks后可以继续使用
因为是新手第一次接触这方面,请问如何为用户设立独立的SS目录
复制多个 Shadowsocks.exe ,放入不同的目录,并修改 gui-config.json 为其分配不同的端口即可。
然后告知用户使用不同目录中的SS即可,或者放入每个用户独立的桌面上,路径通常是:
C:\Users\<用户名>\Desktop\
请不要在这种场合公开你的QQ号,没人能保证加你的人就是你希望的那个人。
简单地说,就是复制多份Shadowsocks,分发给不同的人使用。
感谢您的提醒,因为刚接触shadowsocks,除了教程其他问题暂时还不能理解,就如如何复制shadowsocks,可能需要详细讲述下步骤才行
将 Shadowsocks.exe 放入一个目录中,比如 TEST1 并进入,然后启动 Shadowsocks.exe 配置。
配置完毕后,将 TEST1 目录复制一份,比如 TEST2 ,然后进入 TEST2 目录,双击 Shadowsocks.exe 修改本地端口号或进行其他配置。
以此类推。
意思是修改代理端口为其他值么?
对,就是SS编辑服务器界面右下角的代理端口。
万分感谢,分配后目前暂未出现掉线问题
4.0.9 已静态编译,应该不会有这个依赖问题了
@celeron533 测试通过,4.0.10没问题,这个issue可以关了
Most helpful comment
简而言之:需要安装 Microsoft Visual C++ 2015 Redistributable Update 3 所提供的 vc_redist.x86.exe 。
很凑巧,网友“dz”也遇到了该问题,在他的配合下,找到了问题和办法:
该问题仅存在于使用AEAD算法的服务端,如果不连接的话,仅选择使用AEAD的服务器不会触发此问题,必须得实际通过该服务器访问一下才会出错。
如果没装Microsoft Visual C++ 2015 Redistributable Update 3的情况下,使用SS连接AEAD算法的服务器会遇到找不到 VCRUNTIME140.DLL 的提示。
如果只安装了 vc_redist.x64.exe 则会遇到 Unable to load DLL 'libcrypto-1_1.dll' 的提示。
安装 vc_redist.x86.exe 后一切正常了。
请楼上几位测试一下,看看能否解决问题,Microsoft Visual C++ 2015 Redistributable Update 3的下载地址在三楼。