Консольное приложение не завершается при компиляции с использованием многопоточной (/MT) конфигурации
Я написал следующий код и использовал Visual Studio 2013 для сборки моего.exe
#include <windows.h>
#include <stdio.h>
#include <iostream>
#include <string>
#include <unistd.h>
DWORD WINAPI reader(LPVOID lpParameter)
{
std::string str;
std::cout << "inside reader" << std::endl;
std::getline(std::cin, str);
return 0;
}
int main()
{
HANDLE hThreadR;
DWORD dwThreadId, dwThrdParam = 1;
int threadStatus;
bool terminateThreadStatus;
hThreadR = CreateThread(NULL, 0, reader, 0, 0, &dwThreadId);
threadStatus = WaitForSingleObject(hThreadR, 10000);
if (threadStatus == 258)
{
terminateThreadStatus = TerminateThread(hThreadR, 0);
std::cout << "terminateThreadStatus: " << terminateThreadStatus << std::endl;
}
return 0;
}
Проблема, с которой я сталкиваюсь, заключается в следующем:
Если я собираю.exe с помощью Multi-Threaded DLL(/MD)
(PROJECT->ConsoleApplication Property Pages->Configuration Properties->C/C++->Code Generation->Multi-Threaded DLL(/MD))
и через 10 секунд в stdin ничего не поступает, поток прерывается, прерывается и программа закрывается. Это желаемое поведение.
Если я собираю.exe с помощью Multi-Threaded (/MT)
(PROJECT->ConsoleApplication Property Pages->Configuration Properties->C/C++->Code Generation->Multi-Threaded DLL(/MT))
и через 10 секунд в stdin ничего не поступает, поток прерывается и прерывается, но программа остается открытой.
Я хотел собрать.exe, используя многопоточный (/MT), чтобы избежать ошибки...
Программа не может запуститься, потому что MSVCP120.dll отсутствует на вашем компьютере ", когда.exe работает на компьютере, на котором нет MSVCP120.dll.
Любая идея, что вызывает вышеописанное поведение?