自定义插件:mac电脑本地安装可以通过,但是把mac编译后的插件,放到服务器上EMQX报错,错误:{crc32cer_nif_not_loaded,"plugins/emqx_lazzen_plugin-1.0.1/crc32cer-0.1.8/priv/crc32cer_nif"},[{erlang,nif_error,[{crc32cer_nif_not_loaded,"plugins/emqx_lazzen_plugin-1.0.1/crc32cer-0.1.8/priv/crc32cer_nif"

我执行你的插件包,一直在循环运行 check_crc32cer_nif/0

说明你那里也有问题,它启动不起来就会这样

需要我重新打个包给你么,把那行代码删掉

如果生效后,他就会跳出循环的

循环跳出没问题的。
有个疑问,我拉取依赖 {wolff, "1.10.2"} 对应的 crc32cer 版本是 0.1.8,而你的是 0.1.10
要不你删除 _build 和 rebar.lock , wolff 版本改为 {wolff, "1.9.1"} ,再重新编译出包试试

之前是默认0.1.8,但是我后面怀疑包有问题,我就手动的改了版本号

你的意思是把wolff版本降到1.9.1,crc32cer版本该为默认吗

是的
我这里拿你的源码编译看看, 你可以把上面的压缩包删掉了

好的

版本降下来后,channel都添加不上了 :joy:

OK

牛皮,成功了

啥情况

是依赖的问题吧

可以了,谢谢大佬。那三个依赖为啥一定要加呀

大佬,还有一个问题,这个为啥先释放勾子不行啊,程序不往下走

下面是我的rebar配置

{deps,
    [
        {emqx, {git_subdir, "https://github.com/emqx/emqx.git", {tag, "v5.4.0"}, "apps/emqx"}}
        , {emqx_ctl, {git_subdir, "https://github.com/emqx/emqx.git", {tag, "v5.4.0"}, "apps/emqx_ctl"}}
        , {emqx_utils, {git_subdir, "https://github.com/emqx/emqx.git", {tag, "v5.4.0"}, "apps/emqx_utils"}}
        , {emqx_durable_storage, {git_subdir, "https://github.com/emqx/emqx.git", {tag, "v5.4.0"}, "apps/emqx_durable_storage"}}
        , {emqx_resource, {git_subdir, "https://github.com/emqx/emqx.git", {tag, "v5.4.0"}, "apps/emqx_resource"}}
        , {wolff, "1.10.2"}
    ]}.

{plugins, [
    {emqx_plugrel, {git, "https://github.com/jostar-y/emqx_plugrel.git", {branch, "master"}}}
]}.

{erl_opts, []}.

{relx, [{release, {emqx_lazzen_plugin, "1.0.0"},
    [
        emqx_lazzen_plugin
        , wolff
        , kafka_protocol
        , replayq
        , telemetry
        , lc
        , crc32cer
    ]}
    , {dev_mode, false}
    , {include_erts, false}
]}.

注意 emqx_lazzen_plugin.app.src 文件中这一行要调整

{applications, [kernel, stdlib]},
        , replayq
        , telemetry
        , lc

这三个依赖是项目中需要用到的,和你的问题 crc32cer 没关系

你可以按照我的配置修改后重新编译,然后再试试是否成功。如果还出问题,我认为是你用 mac 编译导致的,建议开发-测试部署-线上部署环境保持一致。

是你这样写的不行?还是 unhooks 操作放在第一行执行不行?

unhooks 操作放第一行,后面就不执行了