要动态加载capi引擎,请使用以下代码:
chown -R www-data:www-data /home/aaron/dev/apwd-flask/app/static/
在我检查调试时,EVP_PKEY *key = NULL;
ENGINE_load_builtin_engines();
ENGINE *engine = ENGINE_by_id("dynamic");
ENGINE_ctrl_cmd_string(engine, "SO_PATH", "./capi.dll", 0);
ENGINE_ctrl_cmd_string(engine, "LOAD", NULL, 0);
ENGINE_init(engine);
失败了。那可能是什么原因呢?
我没有使用ENGINE_ctrl_cmd_string(engine, "LOAD", NULL, 0)
构建openssl,我使用的是openssl附带的默认capi
。
我应该在openssl.cfg文件中启用capi的情况下再次构建openssl,还是我还有其他错误?
答案 0 :(得分:0)
我在命令行上使用android:background="@color/colorPrimary"/>
基本上遇到了同样的问题:
capi.dll
经过大量的反复试验,我发现我使用的DLL是假的!它基本上包含一个始终返回0的bind_engine函数(这意味着失败)。使用在Windows下本机编译的CAPI DLL,它可以工作。
答案 1 :(得分:0)
引擎加载可能失败的另一个(相当模糊的)原因是库本身需要另一个未找到的库。在这种情况下,只需获取通用No such file or directory
错误(尽管库的路径,例如./capi.dll
)是正确的。
要检查这是否是问题,请尝试
ldd ./capi.dll
或
cygcheck ./capi.dll
如果是,请将缺少的库依赖项(例如libeay32.dll
)复制到当前目录。
答案 2 :(得分:-1)
我花时间试图找到capi.dll只是意识到它已经编译成Windows openssl组件。
从命令行:
openssl engine capi