1. ホーム
  2. c++

[解決済み] AllocConsole()でcoutが表示されない

2022-02-25 14:59:07

質問

DLLで、デバッグ用にAllocConsole()とcoutを使ってデータを表示させています。
以前は問題なく動作していましたが、コンパイラ(Visual Studio 2012)を最新に更新してから、DLLはコンソールを表示するだけで、prints/coutsを表示しなくなりました。
なぜこのようなことが起こるのか、思い当たる節がありません。
何か思い当たることはありますか?

私のコードの一部

__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;

しかし、何も表示されない。

どうすればいいですか?

漠然とですが、stdoutをコンソールにリダイレクトする必要があるのではと記憶しています。しかし、私は間違っているかもしれません(あなたは以前にあなたのコードを動作させていたので)。

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