Как исправить ошибку «Кадр не находится в модуле» при создании потока?
"Кадр не находится в модуле". Подскажите с чем это может быть связано
HANDLE h = CreateThread(
    NULL,
    0,
    factorial(gn),
    NULL,
    NULL,
    NULL
);
Третий параметр CreateThread -- указатель на функцию, которая будет запущена в создаваемом потоке. А у тебя записано скорее всего что-то другое. Если ты хотел запустить функцию factorial в потоке, она должна 1) иметь определённый прототип (вот такой), и 2) в функцию CreateThread надо передать её адрес, а не результат её вызова (например, так: CreateThread(NULL, 0, factorial, NULL, NULL, NULL)). 3) если ты сделаешь эти два изменения, тебе прийдётся также переделать передачу параметра в функцию factorial и получение результата её работы.
Решил проблему при помощи глобальной, воспользовался примером из книги Побегайло - "Системное программирование в Windows".
Код:
#include <stdio.h>
#include <Windows.h>

int n;

DWORD WINAPI Add(int Num) {
	printf("Thread is started\n");
	n += Num;
	printf("Thread is finished\n");
}

int main() {

	int inc = 10;
	HANDLE hThread;
	DWORD IDThread;

	printf("n = %d\n", n);

	hThread = CreateThread(
		NULL,
		0,
		Add,
		(void*)inc,
		0,
		&IDThread);

	if (hThread == NULL)
		return GetLastError();

	WaitForSingleObject(hThread, INFINITE);
	CloseHandle(hThread);

	printf("n = %d\n", n);

	return 0;
}