winsoft666 / blog-comment

jiangxueqiao.com博客评论
MIT License
0 stars 0 forks source link

post/1273492093 #8

Open beaudar-bot opened 4 hours ago

beaudar-bot commented 4 hours ago

NSIS教程(8)-插件开发 - 独钓寒江雪

虽然 NSIS 官方提供了很多插件,也有一些第三方的插件可以下载使用,但在实际开发中难免会遇到已有插件没有提供的功能或者插件不好用的情况,这时我们可以选择自己开发 NSIS 插件。

https://jiangxueqiao.com/post/1273492093.html

ss1969 commented 4 hours ago

老板你好,用你的PluginCommon写的插件,有一个问题,就是似乎全局变量不能用,要怎么处理?比如下面这样,我set后再read,永远都是-1


int s_int = -1;

extern "C" __declspec(dllexport) void __cdecl
Set(HWND hwndParent, int string_size, wchar_t* variables, stack_t** stacktop, extra_parameters* extra)
{
    NSMETHOD_INIT(hwndParent);
    {
        s_int = popint();
    }
}

extern "C" __declspec(dllexport) void __cdecl
Read(HWND hwndParent, int string_size, wchar_t* variables, stack_t** stacktop, extra_parameters* extra)
{
    NSMETHOD_INIT(hwndParent);
    {
        pushint(s_int);
    }
}
winsoft666 commented 3 hours ago

可能是NSIS在调用完插件的Set函数后就将插件卸载了,后面再调用Read时又是重新加载的。 可以使用 SetPluginUnload 设置不自动卸载插件。

https://jiangxueqiao.com/post/1923360270.html#SetPluginUnload