在MSVS 2003/2005中构建时,NSIS插件在负载上退出

NSIS Plugin Exiting on Load when Built in MSVS 2003/2005

本文关键字:NSIS 插件 负载 退出 构建 2003 MSVS 2005      更新时间:2023-10-16

我正在尝试使用MSVS 2005(也尝试过MS visual c++ toolkit 2003)构建一个NSIS插件,但是当我从NSIS调用导出的函数时,什么都没有发生。

下面是示例代码来说明这个问题:

#include "stdafx.h"
#include <windows.h>
#include "nsis_ansipluginapi.h"
#define NSISFUNC(name) extern "C" void __declspec(dllexport) __cdecl name(HWND hWndParent,     int string_size, char* variables, stack_t** stacktop, extra_parameters* extra)
NSISFUNC(Test)
{
MessageBox(0,"Test",0,0);
}
BOOL APIENTRY DllMain( HMODULE hModule,
                       DWORD  ul_reason_for_call,
                       LPVOID lpReserved
                     )
{
    return TRUE;
}

我使用MSVS2005设置的默认选项。

我假设有某种动态依赖,这个DLL找不到。

有人经历过吗?

请帮忙,

谢谢!

最常见的问题是链接到一个C运行时dll (msvcrt*.dll),你可以使用Dependency Walker检查你的导入。

因为NSIS在Win95上运行,我们根本不使用CRT,但如果你的目标是Win98+,那么你可以链接到普通的msvcrt.dll(没有版本号)。这在vs2003及以后的版本中很难做到,所以使用/MT或其他CRT选项通常工作量更少。如果您愿意使用DDK/WDK而不是VS,那么您可以链接到普通的msvcrt.dll…