Консольное приложение не завершается при компиляции с использованием многопоточной (/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.

Любая идея, что вызывает вышеописанное поведение?

0 ответов

Другие вопросы по тегам