Std :: format в mex -файлеC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Std :: format в mex -файле

Сообщение Anonymous »

Я пытаюсь использовать std :: format в файле Mex, но получить ошибку неразрешенного внешнего символа при использовании std в качестве модуля.

Код: Выделить всё

// test_mex.cpp
#include "mex.h"

import std;

void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) {
std::string temp{std::format("{:.2f}", 21.234)};
mexPrintf("%s\n", temp.c_str());
plhs[0] = mxCreateDoubleMatrix(10, 10, mxREAL);
}
< /code>
Скомпилируется с < /p>
!cl /std:c++latest /O2 /Oi /EHsc /MD /nologo /c -I"C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\ucrt" -I"C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include" "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\modules\std.ixx"
mex -O COMPFLAGS="$COMPFLAGS -std:c++latest /O2 /Oi /EHsc /Wall /MD" test_mex.cpp;
< /code>
дает эту ошибку < /p>
Error using mex
Creating library test_mex.lib and object test_mex.exp
test_mex.obj : error LNK2019: unresolved external symbol "public: static int const std::_General_precision_tables_2::_Max_P" (?_Max_P@?$_General_precision_tables_2@N@std@@2HB) referenced in function "struct std::to_chars_result __cdecl std::_Floating_to_chars_general_precision(char *,char * const,double,int)" (??$_Floating_to_chars_general_precision@N@std@@YA?AUto_chars_result@0@PEADQEADNH@Z)
test_mex.obj : error LNK2019: unresolved external symbol "public: static int const std::_General_precision_tables_2::_Max_P" (?_Max_P@?$_General_precision_tables_2@M@std@@2HB) referenced in function "struct std::to_chars_result __cdecl std::_Floating_to_chars_general_precision(char *,char * const,float,int)" (??$_Floating_to_chars_general_precision@M@std@@YA?AUto_chars_result@0@PEADQEADMH@Z)
test_mex.mexw64 : fatal error LNK1120: 2 unresolved externals
Если вы не используете std :: format и вместо этого просто укажите строку, например, std :: string temp {"test"} он компилирует и работает.
Кроме того, вместо использования модуля, если вы замените Import Std; #include . C ++ 2022 Компилятор.

Подробнее здесь: https://stackoverflow.com/questions/797 ... a-mex-file
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»