mex скрипт и как показать вывод из другой функции, которая использует vprintf () - PullRequest
0 голосов
/ 06 июня 2018

Я реализую mex-скрипт, где в какой-то момент мне нужно вызвать функцию из внешней библиотеки.Эта функция так же проста, как и печать предоставленного ввода, которое, однако, собирается в качестве аргументов и передается в vprintf().См. Ниже:

void PrintInfo(const char *format, ...)
{
        va_list args;
        va_start(args, format);
        vprintf(format, args);
        va_end(args);
}

Проблема заключается в том, что, как только я вызываю функцию PrintInfo() в моем mex-скрипте, например:

PrintInfo("Give me %i apples.\n", 3);

Я не могу получить какой-либо вывод вподсказка консоли matlab, как я делаю, когда вместо этого использую printf() или cout.Я пытался понять это сам, но шансов пока нет, поэтому я был бы признателен, если бы кто-нибудь мог объяснить мне, в чем проблема и как я могу ее обойти.

Изменение файлов библиотеки невозможно, поэтому яЯ ищу решение, которое можно сделать на mex-скрипте с моей стороны.


Обновление: например, в следующем mex-скрипте из функций печати только PrintInfo() ничего не показывает:

#include "mex.h"

// cpp system headers
#include <iostream>
#include <fstream>
#include <cstdio>
#include <cstdarg>

using namespace std;

void PrintInfo(const char *format, ...)
  {
          va_list args;
          va_start(args, format);
          vprintf(format, args);
          va_end(args);
  }

  void foo()
  {
      printf("Vector size is: %i \n", 5);
  }

  void foo1(const char *format, int sz)
  {
      printf(format, sz);
  }

  void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) {
      PrintInfo("Vector size is: \n", 10);
      foo();
      foo1("Vector size is: %i \n", 2);
      cout << "Vector size is:" << 4 << endl;
  }
...