Я создал библиотеку DLL, в которой запущены 3 рабочих потока, и основной поток находится в цикле, ожидая завершения потоков. Потоки создаются, но выполнение потоков не выполняется.
Я попытался установить функции MessageBox внутри функции, которая создается с помощью CreateThread (), но поле не появляется. Я также попытался отладить, и возвращаемое значение из CreateThread () является допустимым, поэтому поток создается.
BOOL WINAPI DllMain() {
main();
return 1;
}
int main() {
HANDLE h1, h2, h3;
h1 = CreateThread(first)...
h2 = CreateThread(second)...
h3 = CreateThread(third)...
WaitForSingleObject(h3, INFINITE);
return 1;
}
first() {
MessageBoxA("print some stuff");
return;
}
Я включил псевдокод того, как выглядит мой макет. Я не могу предоставить реальный код из-за его чувствительности. Однако это то, что происходит. Я использую LoadLibrary в другом проекте, который загружает этот .DLL. DLL загружается и выполняется DllMain. Затем он вызывает мою основную функцию, которая создает 3 потока. Каждый поток создан. Но то, что внутри потока, не выполняется.
EDIT:
// dllmain.cpp : Defines the entry point for the DLL application.
#include <Windows.h>
void mb() {
MessageBoxW(0, L"AAAAAAAAAAAAAAAAAAAAAAAAA", L"AAAAAAAAAAAAAAAAAAAAAAa", 1);
}
void create() {
HANDLE han;
DWORD threadId;
han = CreateThread(NULL, 0, mb, NULL, 0, &threadId);
han = CreateThread(NULL, 0, mb, NULL, 0, &threadId);
han = CreateThread(NULL, 0, mb, NULL, 0, &threadId);
}
BOOL APIENTRY DllMain() {
create();
return 1;
}