Я использую некоторый C-код в R, и когда в R вызывается немного C-кода, я хотел бы, чтобы он вызвал консоль и распечатал на ней информацию. У меня есть .dll с кучей операторов функций, которые используются в R. Поэтому, когда R использует одну из этих функций C, я бы хотел, чтобы консоль появлялась. После некоторого поиска в Google я нашел следующий код:
void displayToConsole(const char *string)
{
AllocConsole();
HANDLE h = GetStdHandle(STD_OUTPUT_HANDLE);
if (h == INVALID_HANDLE_VALUE)
{
MessageBox(NULL, "stdoutnot available", "Error", MB_OK);
}
if (WriteConsole(h, string, strlen(string), NULL, NULL) == FALSE)
{
if (AllocConsole() == TRUE)
{
WriteConsole(h, string, strlen(string), NULL, NULL);
getch();
FreeConsole();
}
}
else
getch();
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdline, int nCmdShow)
{
displayToConsole("Test");
return 0;
}
};
Итак, я добавил функцию displayToConsole()
в одну из функций C, используемых R, но я не вижу никакого содержимого, выводимого на консоль. Примером этого может быть функция R, которая создает графический интерфейс. После инициализации графического интерфейса я хотел бы, чтобы консоль появилась и распечатала информацию. Возможно, я сильно неправильно понимаю, что я должен здесь делать, поскольку у меня нет никакого опыта в этих темах. Как я могу актуализировать консоль при вызове функций C из .dll?