MEX: no stdout in release

2 vues (au cours des 30 derniers jours)
Zohar
Zohar le 7 Juil 2020
Réponse apportée : Harsh le 26 Août 2024
I build my mex file with VS2019. I do my output with
cout << "hi" << endl;
When I build in release version, it outputs fine to matlab's console; in debug build it doesn't.
  2 commentaires
Lukas
Lukas le 25 Jan 2024
Same here. Is there any update on this?
Zohar
Zohar le 25 Jan 2024

Connectez-vous pour commenter.

Réponses (1)

Harsh
Harsh le 26 Août 2024
Hi @Lukas and @Zohar,
It seems you're attempting to print strings from C++ to MATLAB.
Here are a few alternatives you might consider:
  • Use "mexPrintf " Instead of cout: You can replace "cout" with "mexPrintf " to print directly in MATLAB. Here's an example of how to use "mexPrintf":
#include "mex.h"
void mexFunction(int nlhs, mxArray* plhs[], int nrhs, const mxArray* prhs[]) {
mexPrintf("This prints in MATLAB again!!\n");
}
  • Error Encountered in Visual Studio: On attempting the same, I noticed an issue where, after running the MEX function along with the C++ file, and then trying to rebuild, an error appears in Visual Studio.
Initially, I executed the MEX file in MATLAB. Subsequently, when I attempted to build again in Visual Studio, I encountered the following error:
This error occurs irrespective of whether you are in release or debug mode. Even when executing the MEX file from the release folder, the error persists.
  • Solution: A simple way to resolve this issue is to restart MATLAB. After doing so, the build process is completed successfully.
(As shown here, the build completes successfully even in debug mode.)
I hope this information is helpful. Thank you!

Catégories

En savoir plus sur Write C Functions Callable from MATLAB (MEX Files) dans Help Center et File Exchange

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by