wasm openssl获取dlopen中止

wasm openssl获取dlopen中止,openssl,emscripten,webassembly,Openssl,Emscripten,Webassembly,我编写openssl1.1.1c在浏览器中进行加密和解密。这是我的构建脚本。 emconfigure./Configure linux-x32-无asm-无线程 sed-i的| ^CROSS_COMPILE.$| CROSS_COMPILE=|g'Makefile emmake make-j 12 build_生成的libssl.a libcrypto.a apps/openssl 我得到了两个位码文件libcrypto.so和libssl.so,然后我在自己的代码中使用它。 这是我的CMkae

我编写openssl1.1.1c在浏览器中进行加密和解密。这是我的构建脚本。 emconfigure./Configure linux-x32-无asm-无线程

sed-i的| ^CROSS_COMPILE.$| CROSS_COMPILE=|g'Makefile

emmake make-j 12 build_生成的libssl.a libcrypto.a apps/openssl

我得到了两个位码文件libcrypto.so和libssl.so,然后我在自己的代码中使用它。 这是我的CMkaeLists.txt:

include_目录${OPENSSL_ROOT}/build/include 链接目录${OPENSSL\u ROOT}/lib

setCMAKE_C_FLAGS-pre js pre.js-s WASM=1-s额外_导出的_运行时_方法=“[\cwrap\,\getValue\,\setValue\]”

SETCMAKE_可执行文件_后缀.html

添加_executableSM2FinalNew main.c${DIR_SRCS}

目标链接库M2FinalNew crypto

当我使用sha256 base64时,一切正常,但当我使用某种方法实现sm2加密和解密时,我在网页上出现了错误

要使用dlopen,您需要使用Emscripten的链接支持,请参阅https://github.com/emscripten-core/emscripten/wiki/Linking

我发现当我在openssl/EC.h中调用EC_POINT_mul方法时,出现了错误,当我注释EC_POINT_mul调用时,错误消失了,但加密结果不正确。
我不知道为什么。

您正在编译的代码似乎正在尝试使用dlopen加载外部库。Emscripten对共享库和动态链接的支持相当有限。您最好的办法是找到有问题的代码,并尝试静态链接所需的库。

感谢您的回答,我发现当我使用选项no engine and no dso构建openssl时,错误消失了,我不知道为什么。我认为在openssl的某个地方,它调用了dlopen函数。