c++ AllocConsole() कोउट प्रदर्शित नहीं कर रहा है




dll (2)

मुझे अस्पष्टता से याद है कि आपको स्टडआउट को कंसोल पर रीडायरेक्ट करने की आवश्यकता हो सकती है। हालांकि मैं गलत हो सकता हूं (क्योंकि आपका कोड पहले काम कर रहा था):

AllocConsole();
freopen("CONOUT$", "w", stdout);
std::cout << "This works" << std::endl;

मेरे पास एक डीएलएल है जहां मैं डिबगिंग उद्देश्यों के लिए डेटा प्रदर्शित करने के लिए AllocConsole () और cout का उपयोग करता हूं।
यह ठीक काम करता था, लेकिन जब से मैंने अपने कंपाइलर (विजुअल स्टूडियो 2012) को नवीनतम डीएलएल में अपडेट किया था, तो बस कंसोल दिखाता है लेकिन प्रिंट / कैउट्स नहीं।
मैं इस विचार से बाहर हूं कि यह क्यों हो रहा है।
कोई विचार?

मेरे कोड का हिस्सा

__declspec(dllexport) INT APIENTRY DllMain(HMODULE hDLL, DWORD Reason, LPVOID Reserved)
{
    switch(Reason)
    {
    case DLL_PROCESS_ATTACH:    
        AllocConsole();

        DisableThreadLibraryCalls(hDLL);

        //
        DetourTransactionBegin();
        DetourUpdateThread(GetCurrentThread());
        DetourAttach(&(PVOID&)pSend, MySend);
        if(DetourTransactionCommit() == NO_ERROR)
             cout << "[" << MySend << "] successfully detoured." << endl;

लेकिन कुछ भी प्रदर्शित नहीं होता है।


यह लाइन std::cout.clear() साथ vs2015 का उपयोग कर काम करता है

if (!AllocConsole())
    MessageBox(NULL, L"The console window was not created", NULL, MB_ICONEXCLAMATION);

FILE* fp;

freopen_s(&fp, "CONOUT$", "w", stdout);

printf("Hello console on\n");

std::cout.clear();

std::cout << "Cout line one." << std::endl;

cout << "Cout line two." << std::endl;

MessageBox(NULL, (L"Pause to see console output."), (L"Pause Here"), MB_OK | MB_SYSTEMMODAL | MB_ICONEXCLAMATION);

fclose(fp);

if (!FreeConsole())
    MessageBox(NULL, L"Failed to free the console!", NULL, MB_ICONEXCLAMATION);




dll