Я реализую 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;
}