在MSVS 2003/2005中内置时,NSIS插件在加载时退出

时间:2014-08-10 02:52:57

标签: c++ c visual-studio-2005 nsis

我正在尝试使用MSVS 2005(也尝试过MS visual C ++ toolkit 2003)构建NSIS插件,但是当我从NSIS调用导出的函数时,没有任何反应。

以下是用于说明问题的示例代码:

#include "stdafx.h"
#include <windows.h>
#include "nsis_ansi\pluginapi.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无法找到某种动态依赖。

有没有人经历过这个?

非常感谢您的帮助,

谢谢!

1 个答案:

答案 0 :(得分:3)

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

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