MATLAB から C++ への変数の引き渡しプ​ログラムのエラー解消​方法を探しております

6 ビュー (過去 30 日間)
RN
RN 2020 年 9 月 17 日
現在同様の質問をして回答をいただいておりますが、回答に対して何故かコメント欄で返信ができない状況になっているため
再度質問をさせていただきます。
前回の質問内容↓
https://jp.mathworks.com/help/matlab/matlab_external/pass-variables-from-matlab-to-c.html
上記の「C++へのMATLAB計算結果の取り込み」と同様のコードをC++で記述して、Visualstudio2019でビルドを行いましたが、
ヘッダーファイル「ArrayFactorry.hpp」内の168,195,534.606行目において「C2760 構文エラー:予期しないトークン’識別子’必要なトークン’式’」
のエラーが4カ所発生し、コンパイラが現在できない状況です。
エラーが発生している箇所の記述を以下に示します。(エラー発生個所を下線で示します)
167 typedef int (*CreateArrayWithDimsAndDataFcnPtr)(
168 impl::ArrayFactoryImpl * impl, int arraytype , size_t* dims, size_t numDims,
169 const void* const dataStart, size_t numEl, impl::ArrayImpl**);
~(省略)~
193 typename std::enable_if<std::is_arithmetic<T>::value, TypedArray<T>>::type createScalar(
194 const T val) {
195 typedef int (*CreateScalarArrayFcnPtr)(impl::ArrayFactoryImpl * impl, int arrayType,
196 const void* data, impl::ArrayImpl**);
~(省略)~
533 typedef int (*CreateArrayFromBufferV2FcnPtr)(
534 impl::ArrayFactoryImpl * impl, int arrayType, size_t* dims, size_t numDims,
535 void* buffer, void (*deleter)(void*), impl::ArrayImpl**, int memoryLayout);
~(省略)~
605 typedef int (*CreateSparseArrayFromBufferFcnPtr)(
606 impl::ArrayFactoryImpl * impl, int arrayType, size_t* dims, size_t numDims, size_t nnz,
607 void* dataBuffer, void (*dataDeleter)(void*), size_t* rowsBuffer,
608 void (*rowsDeleter)(void*), size_t* colsBuffer, void (*colsDeleter)(void*),
609 impl::ArrayImpl**);
コンパイラに必要と思われるヘッダーファイルを所有しているMATLABファイルからコピーして参照しております。
〇参照しているヘッダーファイル一覧
・「MatlabDataArray」フォルダ内
・「MatlabEngine」フォルダ内
・「MatlabExecutionInterface」フォルダ内
・MatlabDataArray.hpp
・MatlabEngine.hpp
・MatlabExecutionInterface.hpp
エラーの解決方法として調査したところVisualStudio内のプロパティの「C/C++」⇒「言語」⇒「準拠モード」⇒「いいえ」にする
ことで解決した報告を確認したため、同様の方法で設定しビルドを行ってみたところC2760のエラーはなくなりましたが
「LNK2019 未解決の外部シンボル __imp__cpp_engine_create_session が関数 "void __cdecl `anonymous namespace'::initSession(void)" (?initSession@?A0x352e24b4@@YAXXZ) で参照されました。」
のエラーが15件新たに発生しました。
こちらについてもエラー解決方法の調査を行っておりますが、上記ヘッダーファイルで不足しているファイルまたは設定事項があり、
ビルドができないためと考えております。
つきましてはこのエラーを解消しビルドが可能となる方法をご教授いただけないでしょうか?
よろしくお願い申し上げます。
↑前回の質問内容
上記に対して Kojiro Saito様より回答をいただきまして
・プラットフォームの設定を「x64」にする
・プロジェクトのプロパティを開いて、「C/C++」→「全般」→「追加のインクルードディレクトリ」に「MATLAB_ROOT\extern\include」 (例:C:\Program Files\MATLAB\R2020a\extern\include) を追加
・「リンカー」の「追加のライブラリディレクトリ」に「MATLAB_ROOT\extern\lib\win64\microsoft」 (例:C:\Program Files\MATLAB\R2020a\extern\lib\win64\microsoft) を追加
・「リンカー」→「入力」で「追加の依存ファイル」に「libMatlabEngine.lib」と「libMatlabDataArray.lib」を追加
・環境変数Pathに「matlabroot\extern\bin\win64」(例:C:\Program Files\MATLAB\R2020a\extern\bin\win64)を追加
以上の流れで設定を行いましたが同様のエラー(ヘッダーファイル「ArrayFactorry.hpp」内の168,195,534.606行目において「C2760 構文エラー:予期しないトークン’識別子’必要なトークン’式’」)が4件同じ箇所で発生しております。
諸事情によりMATLABとVisualStudioを別のPC上で動作させているため、必要なファイルをVisualstudio側のPCにコピーする形でビルドしておりますが、
同じPC上に二つのソフトウェアが存在しないといけないのでしょうか?(「R2020a」ファイルをコピーしてVisualStudio側のPCに入れ、上記のアドレスと
同様の場所を参照しましたが結果は同じでした。)
以上お手数をお掛けして申し訳ありませんがよろしくお願い申し上げます。

回答 (0 件)

カテゴリ

Help Center および File ExchangeData Exchange and Mapping with C++ Applications についてさらに検索

Community Treasure Hunt

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

Start Hunting!