这个问题在这里已经有答案:
Correctly over-loading a stringbuf to replace cout in a MATLAB mex file(4个答案)
上个月关门了。
我有一个关于在MatLab中显示C输出的问题。我编写了一个Mex函数,以便在MATLAB中包含我的C算法,但在MATLAB中显示我的输出时遇到了问题。C++mex函数调用生成我的输出的其他类。为了让事情简单明了,这里有一个例子。
Mexunction.cpp:
#include "mex.hpp"
#include "mexAdapter.hpp"
#include "Helper.h"
class MexFunction : public matlab::mex::Function {
public:
void operator()(matlab::mex::ArgumentList outputs, matlab::mex::ArgumentList inputs) {
// Function implementation
...
Helper();
}
};
(Helper类,在Mexunction.cpp中调用)
#ifndef HELPER_H
#define HELPER_H
#include <iostream>
class Helper
{
public:
Helper()
{
std::cout << "Hello World" << std::endl;
}
};
#endif
如何在matlab命令窗口中显示字符串"Hello world"
?
1条答案
按热度按时间gupuwyp21#
对于C-MEX文件,您需要使用
mexPrintf
函数,换句话说在一个C++MEX文件中,我刚刚使用R2022a在Linux和Windows上尝试了以下操作。对
std::cout
的直接调用可以正常工作,但如果您在不同的线程上,事情就不能正常工作--这会是问题所在吗?