Вот самый простой образец Hello World, который я мог бы придумать, который будет работать с rundll.exe
. Пожалуйста, следуйте по этим шагам:
Start свежий проект WIN32 DLL в Visual Studio (я использовал VS2010)
В dlllmain.cpp добавить:
// this shoud ideally go into the .h file I believe
__declspec(dllexport) void CALLBACK EntryPoint(
HWND hwnd,
HINSTANCE hinst,
LPSTR lpszCmdLine,
int nCmdShow);
// our hello world function
void CALLBACK EntryPoint(HWND hwnd, HINSTANCE hinst, LPSTR lpszCmdLine, int nCmdShow)
{
int msgboxID = MessageBox(
NULL,
L"Hello World from Run32dll",
L"Hello World",
MB_ICONWARNING | MB_CANCELTRYCONTINUE | MB_DEFBUTTON2
);
switch (msgboxID)
{
case IDCANCEL:
// TODO: add code
break;
case IDTRYAGAIN:
// TODO: add code
break;
case IDCONTINUE:
// TODO: add code
break;
}
}
Добавить module.def
файл в свой проект и редактировать следующий фрагмент кода в нем:
LIBRARY YourDll
EXPORTS
EntryPoint
Compile, а затем проверить из командной строки с
rundll32 YourDll.dll,EntryPoint
Вы должны быть встречены с MessageBox с тремя кнопками
Я использовал следующий URL, чтобы преодолеть проблемы, C++ и EntryPoint не найден на ранних этапах моих усилий:
Там даже не просто привет мир там !!! –
Конечно, есть! Он дает вам подпись единственной функции, которая имеет значение. Вы можете добавить 'std :: cout <<« Hello World! »;' Part самостоятельно. –