Как мне отправить контент в окно вывода, используя Juce framework в VS 2012

У меня проблемы с выводом сообщений в окно вывода в Visual Studio 2012.

std::cout << "string"

Вышеприведенное не работает, поскольку в окно отладки не отправляется контент.

Но я также нашел функцию DBG, которую использует JUCE, т.е.

DBG("message")

Но это приводит к тому же самому результату: сообщение не отправляется в окно вывода.

Я продолжил исследования и в конце концов обнаружил, что должен использовать функцию OutputDebugString для отладки в Visual Studio, которую я использовал в следующем коде (посмотрите на функцию инициализации на полпути),

#include "../JuceLibraryCode/JuceHeader.h"#include "Logn.h"#include "C:\Users\User\Documents\Visual Studio 2012\Projects\ConsoleApplication1\ConsoleApplication1\stdafx.h"#include "Window.h"#include <windows.h>
#include <iostream>
#include <fstream>

//==============================================================================

class MainWindow : public DocumentWindow
{
public:
MainWindow() : DocumentWindow ("JUCE Hello World!", Colours::lightgrey, DocumentWindow::allButtons,true)
{
setContentOwned(new Window(), true);
centreWithSize(getWidth(), getHeight());
setVisible(true);
}

~MainWindow()
{

}

void closeButtonPressed() override
{
JUCEApplication::quit();
}
};

class Test_1Application : public JUCEApplication
{
public:
//==============================================================================
Test_1Application() {}

const String getApplicationName() override       { return ProjectInfo::projectName; }
const String getApplicationVersion() override    { return ProjectInfo::versionString; }
bool moreThanOneInstanceAllowed() override       { return true; }

//==============================================================================
void initialise (const String& commandLine) override
{
// Add your application's initialisation code here..
mainWindow = new MainWindow();
OutputDebugString("My output string.");
}

void shutdown() override
{
// Add your application's shutdown code here..
mainWindow = nullptr;
}

//==============================================================================
void systemRequestedQuit() override
{
// This is called when the app is being asked to quit: you can ignore this
// request and let the app carry on running, or call quit() to allow the app to close.
quit();
}

void anotherInstanceStarted (const String& commandLine) override
{
// When another instance of the app is launched while this one is running,
// this method is invoked, and the commandLine parameter tells you what
// the other instance's command-line arguments were.
}
private:
ScopedPointer<MainWindow> mainWindow;
};

//==============================================================================
// This macro generates the main() routine that launches the app.
START_JUCE_APPLICATION (Test_1Application)

Тем не менее, выше также не работает, и выдает следующее сообщение об ошибке,

1>------ Build started: Project: NewProject, Configuration: Debug Win32 ------
1>  Main.cpp
1>c:\users\user\programming\cpp\source\main.cpp(53): warning C4100: 'commandLine' : unreferenced formal parameter
1>c:\users\user\programming\cpp\source\main.cpp(78): warning C4100: 'commandLine' : unreferenced formal parameter
1>c:\users\user\programming\cpp\source\main.cpp(90): error C2731: 'WinMain' : function cannot be overloaded
1>          c:\users\user\programming\cpp\source\main.cpp(90) : see declaration of 'WinMain'
1>c:\users\user\programming\cpp\source\main.cpp(90): error C2733: 'WinMain' : second C linkage of overloaded function not allowed
1>          c:\program files (x86)\windows kits\8.0\include\um\winbase.h(2188) : see declaration of 'WinMain'
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

Я начал новый проект без использования JUCE, и функция OutputDebugString работает отлично.

Таким образом, проблема в том, что инфраструктура JUCE не очень хорошо работает с функцией OutputDebugString, которая, кажется, единственная функция, которую я могу использовать для вывода чего-либо в окно отладки в Visual Studio.

Пожалуйста, помогите мне понять, как все это должно работать и что мне нужно сделать, чтобы это исправить. Я довольно новичок в C ++, Visual Studio и JUCE, так что это препятствие для меня, чтобы исправить. И все, что я пытаюсь сделать, это вывести hello world в окно вывода. > 🙁

1

Решение

Похоже, вы не получаете вывод из DBG, потому что программа не компилируется. Попробуйте удалить все #include, кроме juce. Он также не скомпилируется с outputDebugString, если вы не измените его на …

    Logger::outputDebugString("blah");

… но вы все равно должны использовать макрос DBG (потому что операторы компилируются только в отладочных сборках).

1

Другие решения


По вопросам рекламы [email protected]