Проблемы с правильной настройкой кода Visual Studio для программ Matlab C++ Engine (библиотека и включения в Tasks.json C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Проблемы с правильной настройкой кода Visual Studio для программ Matlab C++ Engine (библиотека и включения в Tasks.json

Сообщение Anonymous »

Запуск MacOS 13.5 на M1. VS Code v1.80.2 с расширением C/C++. MatLab vR2023a (полная установка, а не только время выполнения). Почти наверняка это проблема с моей настройкой VS Code, и мне бы очень хотелось знать, как правильно это сделать для этого и других проектов.
Я могу создать пример программы testFeval. cpp и создайте исполняемый файл с помощью командной строки MatLab, как описано здесь. Как описано, я могу создать файл cpp с кодом их тестовой программы, а затем построить его из командной строки MatLab с помощью:

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

>> mex -setup -client engine C++
>> mex -v -client engine testFeval.cpp
При этом создается исполняемый файл, который я могу запустить с терминала MacOS с помощью % ./testFeval.cpp. Программа работает нормально.
Однако я хотел бы разработать C++ в VS Code, как описано здесь. Согласно этой странице, мне нужны эти библиотеки (где matlabroot = '/Applications/MATLAB_R2023a.app'): На этой странице я добавляю это в ~./zshrc: р>

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

export DYLD_LIBRARY_PATH="/Applications/MATLAB_R2023a.app/extern/bin/maci64"
Мне также нужны файлы заголовков из «/Applications/MATLAB_R2023a.app/extern/include»
Я добавляю их в c_cpp_properties. json и Tasks.json, как предложено в других разделах SO.
Когда я запускаю файл C/C++, я вижу множество проблем. В основном отсутствуют файлы заголовков, но также есть некоторые проблемы со связью.
Например, VS Code не может найти libmwordfilt2.h. Но я могу подтвердить, что он находится в "/Applications". /MATLAB_R2023a.app/extern/include"
Все «отсутствующие» включения должны быть найдены с помощью путей, добавленных в «args» файла Tasks.json . Полный файл Tasks.json:

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

{
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: clang++ build active file",
"command": "/usr/bin/clang++",
"args": [
"-fcolor-diagnostics",
"-fansi-escape-codes",
"-I", // add directory to search paths, e.g., headers
"/Applications/MATLAB_R2023a.app/extern/include/**",
"/Applications/MATLAB_R2023a.app/extern/include",
"/Applications/MATLAB_R2023a.app/simulink/include",
"-L", // add directory to library search path
"/Applications/MATLAB_R2023a.app/extern/bin/maci64/libMatlabEngine.dylib",
"/Applications/MATLAB_R2023a.app/extern/bin/maci64/libMatlabDataArray.dylib",
"-g", // generate source-level debug info
"${file}",
// "-o", // write output to fileBasename (no extension)
// "${fileDirname}/${fileBasenameNoExtension}",
],
"options": {
"cwd": "${fileDirname}"
},
"group": {
"kind": "build",
"isDefault": true
},
"detail": "Task generated by Debugger.",
"dependsOn":["build_lib"]
}
],
"version": "2.0.0"
}
Насколько я могу судить, MatLab использует clang++, и я тоже так делаю в c_cpp_properties.json:

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

{
"configurations": [
{
"name": "Mac",
"includePath": [
"${workspaceFolder}/**",
"/Applications/MATLAB_R2023a.app/extern/include/**",
"/Applications/MATLAB_R2023a.app/extern/include",
"/Applications/MATLAB_R2023a.app/extern/bin/maci64"
],
"defines": [],
"macFrameworkPath": [
"/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks"
],
"compilerPath": "/usr/bin/clang++",
"cStandard": "c11",
"cppStandard": "c++11",
"intelliSenseMode": "${default}"
}
],
"version": 4
}
Когда я собираю testFeval.cpp с помощью приглашения MatLab в подробном режиме, я получаю этот вывод, который может указывать на отсутствие некоторых включений или конфигураций:

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

>> mex -setup -client engine C++
ENGINE configured to use 'Xcode Clang++' for C++ language compilation.
>> mex -v -client engine testFeval.cpp
Verbose mode is on.
... Looking for compiler 'Xcode Clang++' ...
... Looking for environment variable 'DEVELOPER_DIR' ...No.
... Executing command 'xcode-select -print-path' ...Yes ('/Applications/Xcode.app/Contents/Developer').
... Looking for folder '/Applications/Xcode.app/Contents/Developer' ...Yes.
... Executing command 'which xcrun' ...Yes ('/usr/bin/xcrun').
... Looking for folder '/usr/bin' ...Yes.
... Executing command 'defaults read com.apple.dt.Xcode IDEXcodeVersionForAgreedToGMLicense' ...No.
... Executing command 'defaults read /Library/Preferences/com.apple.dt.Xcode IDEXcodeVersionForAgreedToGMLicense' ...Yes ('14.3.1').
... Executing command '
agreed=14.3.1
if echo $agreed | grep -E '[\.\"]' >/dev/null; then
lhs=`expr "$agreed" : '\([0-9]*\)[\.].*'`
rhs=`expr "$agreed" : '[0-9]*[\.]\(.*\)$'`
if echo $rhs | grep -E '[\."]' >/dev/null; then
rhs=`expr "$rhs" : '\([0-9]*\)[\.].*'`
fi
if [ $lhs -gt 4 ] || ( [ $lhs -eq 4 ] && [ $rhs -ge 3 ] ); then
echo $agreed
else
exit 1
fi
fi' ...Yes ('14.3.1').
... Executing command 'xcrun -sdk macosx --show-sdk-path' ...Yes ('/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk').
... Executing command 'xcrun -sdk macosx --show-sdk-version | awk 'BEGIN {FS="."} ; {print $1"."$2}'' ...Yes ('13.3').
...  Executing command 'clang --version | grep -Eo '[0-9]+\.[0-9]+\.[0-9]'|head -1' ...Yes ('14.0.3').
Found installed compiler 'Xcode Clang++'.
Set INCLUDE = /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1;/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/14.0.3/include;/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include;/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk/usr/include;/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk/System/Library/Frameworks;
Options file details
-------------------------------------------------------------------
Compiler location: /Applications/Xcode.app/Contents/Developer
Options file: /Users/phillip_at_work/Library/Application Support/MathWorks/MATLAB/R2023a/ENGINE_C++_maci64.xml
CMDLINE100 : /usr/bin/xcrun -sdk macosx13.3 clang++ -c -DMATLAB_DEFAULT_RELEASE=R2017b  -DUSE_MEX_CMD   -DMATLAB_MEX_FILE  -I"/Applications/MATLAB_R2023a.app/extern/include" -I"/Applications/MATLAB_R2023a.app/simulink/include" -fno-common -arch x86_64 -mmacosx-version-min=10.15 -fexceptions -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk -fobjc-arc -std=c++14 -stdlib=libc++ -O2 -fwrapv -DNDEBUG "/Users/phillip_at_work/Projects/matlab_cpp_test_v2/testFeval.cpp" -o /var/folders/c5/bhbgscv92tj3_x8y54q8rs8m0000gn/T/mex_67453097271459_5943/testFeval.o
CMDLINE200 : /usr/bin/xcrun -sdk macosx13.3 clang++ -Wl,-twolevel_namespace -undefined error -arch x86_64 -mmacosx-version-min=10.15 -Wl,-syslibroot,/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk -framework Cocoa  -stdlib=libc++ -O    /var/folders/c5/bhbgscv92tj3_x8y54q8rs8m0000gn/T/mex_67453097271459_5943/testFeval.o   -L"/Applications/MATLAB_R2023a.app/bin/maci64" -lmx -lmex -lmat -L"/Applications/MATLAB_R2023a.app/extern/bin/maci64" -lMatlabDataArray -lMatlabEngine -leng -L"/Applications/MATLAB_R2023a.app/extern/bin/maci64" -lMatlabDataArray -lMatlabEngine -o testFeval
CC : /usr/bin/xcrun -sdk macosx13.3 clang
CXX : /usr/bin/xcrun -sdk macosx13.3 clang++
DEFINES : -DMATLAB_DEFAULT_RELEASE=R2017b  -DUSE_MEX_CMD   -DMATLAB_MEX_FILE
MATLABMEX : -DMATLAB_MEX_FILE
MACOSX_DEPLOYMENT_TARGET : 10.15
CFLAGS : -fno-common -arch x86_64 -mmacosx-version-min=10.15 -fexceptions -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk
CXXFLAGS : -fno-common -arch x86_64 -mmacosx-version-min=10.15 -fexceptions -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk -fobjc-arc -std=c++14 -stdlib=libc++
INCLUDE : -I"/Applications/MATLAB_R2023a.app/extern/include" -I"/Applications/MATLAB_R2023a.app/simulink/include"
CXXOPTIMFLAGS : -O2 -fwrapv -DNDEBUG
CXXDEBUGFLAGS : -g
LD : /usr/bin/xcrun -sdk macosx13.3 clang
LDXX : /usr/bin/xcrun -sdk macosx13.3 clang++
LDFLAGS : -Wl,-twolevel_namespace -undefined error -arch x86_64 -mmacosx-version-min=10.15 -Wl,-syslibroot,/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk -framework Cocoa  -stdlib=libc++
LDBUNDLE :
LINKEXPORT :
LINKEXPORTVER :
LINKEXPORTCPP :
LINKLIBS : -L"/Applications/MATLAB_R2023a.app/bin/maci64" -lmx -lmex -lmat -L"/Applications/MATLAB_R2023a.app/extern/bin/maci64" -lMatlabDataArray -lMatlabEngine -leng -L"/Applications/MATLAB_R2023a.app/extern/bin/maci64"  -lMatlabDataArray -lMatlabEngine
LDOPTIMFLAGS : -O
LDDEBUGFLAGS : -g
OBJEXT : .o
LDEXT :
SETENV : CC="/usr/bin/xcrun -sdk macosx13.3 clang"
CXX="/usr/bin/xcrun -sdk macosx13.3 clang++"
CFLAGS="-fno-common -arch x86_64 -mmacosx-version-min=10.15 -fexceptions -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk -DMATLAB_DEFAULT_RELEASE=R2017b  -DUSE_MEX_CMD   -DMATLAB_MEX_FILE "
CXXFLAGS="-fno-common -arch x86_64 -mmacosx-version-min=10.15 -fexceptions -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk -fobjc-arc -std=c++14 -stdlib=libc++ -DMATLAB_DEFAULT_RELEASE=R2017b  -DUSE_MEX_CMD   -DMATLAB_MEX_FILE "
COPTIMFLAGS="-O2 -fwrapv -DNDEBUG"
CXXOPTIMFLAGS="-O2 -fwrapv -DNDEBUG"
CDEBUGFLAGS="-g"
CXXDEBUGFLAGS="-g"
LD="/usr/bin/xcrun -sdk macosx13.3 clang"
LDXX="/usr/bin/xcrun -sdk macosx13.3 clang++"
LDFLAGS="-Wl,-twolevel_namespace -undefined error -arch x86_64 -mmacosx-version-min=10.15 -Wl,-syslibroot,/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk -framework Cocoa  -stdlib=libc++ -L"/Applications/MATLAB_R2023a.app/bin/maci64" -lmx -lmex -lmat -L"/Applications/MATLAB_R2023a.app/extern/bin/maci64" -lMatlabDataArray -lMatlabEngine -leng -L"/Applications/MATLAB_R2023a.app/extern/bin/maci64" -lMatlabDataArray -lMatlabEngine "
LDDEBUGFLAGS="-g"
DEVELOPER_DIR_CHECK :
XCODE_DIR : /Applications/Xcode.app/Contents/Developer
XCRUN_DIR : /usr/bin
XCODE_AGREED_VERSION : 14.3.1
ISYSROOT : /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk
SDKVER : 13.3
CLANG_VERSION : 14.0.3
MATLABROOT : /Applications/MATLAB_R2023a.app
ARCH : maci64
SRC : "/Users/phillip_at_work/Projects/matlab_cpp_test_v2/testFeval.cpp"
OBJ : /var/folders/c5/bhbgscv92tj3_x8y54q8rs8m0000gn/T/mex_67453097271459_5943/testFeval.o
OBJS : /var/folders/c5/bhbgscv92tj3_x8y54q8rs8m0000gn/T/mex_67453097271459_5943/testFeval.o
SRCROOT : /Users/phillip_at_work/Projects/matlab_cpp_test_v2/testFeval
DEF : /var/folders/c5/bhbgscv92tj3_x8y54q8rs8m0000gn/T/mex_67453097271459_5943/testFeval.def
EXP : "testFeval.exp"
LIB : "testFeval.lib"
EXE : testFeval
ILK : "testFeval.ilk"
MANIFEST : "testFeval.manifest"
TEMPNAME : testFeval
EXEDIR :
EXENAME : testFeval
OPTIM : -O2 -fwrapv -DNDEBUG
LINKOPTIM : -O
-------------------------------------------------------------------
Building with 'Xcode Clang++'.
/usr/bin/xcrun -sdk macosx13.3 clang++ -c -DMATLAB_DEFAULT_RELEASE=R2017b  -DUSE_MEX_CMD   -DMATLAB_MEX_FILE  -I"/Applications/MATLAB_R2023a.app/extern/include" -I"/Applications/MATLAB_R2023a.app/simulink/include" -fno-common -arch x86_64 -mmacosx-version-min=10.15 -fexceptions -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk -fobjc-arc -std=c++14 -stdlib=libc++ -O2 -fwrapv -DNDEBUG "/Users/phillipcurtsmith/Projects/matlab_cpp_test_v2/testFeval.cpp" -o /var/folders/c5/bhbgscv92tj3_x8y54q8rs8m0000gn/T/mex_67453097271459_5943/testFeval.o
/usr/bin/xcrun -sdk macosx13.3 clang++ -Wl,-twolevel_namespace -undefined error -arch x86_64 -mmacosx-version-min=10.15 -Wl,-syslibroot,/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk -framework Cocoa  -stdlib=libc++ -O    /var/folders/c5/bhbgscv92tj3_x8y54q8rs8m0000gn/T/mex_67453097271459_5943/testFeval.o   -L"/Applications/MATLAB_R2023a.app/bin/maci64" -lmx -lmex -lmat -L"/Applications/MATLAB_R2023a.app/extern/bin/maci64" -lMatlabDataArray -lMatlabEngine -leng -L"/Applications/MATLAB_R2023a.app/extern/bin/maci64" -lMatlabDataArray -lMatlabEngine -o testFeval
MEX completed successfully.
Я начал добавлять что-то в файлы json на основе результатов сборки MatLab, но теперь я просто предполагаю. Есть какие-нибудь идеи о правильной процедуре настройки?

Подробнее здесь: https://stackoverflow.com/questions/768 ... grams-libr
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Пакет MATLAB Python и модуль matlab.engine в Anaconda Spyder
    Anonymous » » в форуме Python
    0 Ответы
    32 Просмотры
    Последнее сообщение Anonymous
  • Несколько программ из одного и того же исходного кода, правильные значки программ
    Anonymous » » в форуме C++
    0 Ответы
    24 Просмотры
    Последнее сообщение Anonymous
  • Несколько программ из одного и того же исходного кода, правильные значки программ
    Anonymous » » в форуме C++
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • Как установить файл Tasks.json по умолчанию для кода Visual Studio?
    Anonymous » » в форуме C++
    0 Ответы
    21 Просмотры
    Последнее сообщение Anonymous
  • Tasks.WhenAll(tasks) не перехватывает никаких исключений
    Anonymous » » в форуме C#
    0 Ответы
    102 Просмотры
    Последнее сообщение Anonymous

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