Я пытаюсь создать плагин NSIS, используя MSVS 2005 (также пробовал MS Visual C ++ toolkit 2003), но когда я вызываю экспортированную функцию из 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 не может найти.
Кто-нибудь когда-либо испытывал это?
Был бы признателен за помощь в этом,
Спасибо!
Наиболее распространенная проблема — это ссылка на одну из DLL-библиотек C (msvcrt * .dll), которые можно проверить с помощью Зависимость Уокер.
Поскольку NSIS работает на Win95, мы вообще не используем CRT, но если ваша цель — Win98 +, то вы можете обойтись без ссылок на простой файл msvcrt.dll (без номера версии). Это сложнее сделать в VS 2003 и более поздних версиях, поэтому /MT
или другие варианты ЭЛТ часто меньше работы. Если вы хотите использовать DDK / WDK вместо VS, тогда вы можете связаться с простым msvcrt.dll …