Visual Studio環境で作成されたC++を必要なヘッダファイルを追加しビルドをすると、「namespace」や「class」の定義箇所でエラーとなってしまいます。
3 ビュー (過去 30 日間)
古いコメントを表示
別環境(Visual Studio)で作成されたC++での処理をS-Function Builderを用いて実装したいと考えています。
必要なヘッダファイルを追加しビルドをすると、「namespace」や「class」の定義箇所でエラーとなってしまいます。
S-Function BuilderではC++の構文は使用できないでしょうか。
0 件のコメント
回答 (1 件)
Toshinobu Shintai
2024 年 7 月 25 日
分かりにくくて申し訳ありませんが、C++のコードをインポートする場合、C Functionブロックでないと直接インポートができません。
また、R2023a以降にnamespace内のクラスをインポートできるようになりました。
C Functionブロックの使い方に関して、以下に情報共有させていただきます。
2 件のコメント
Yorihisa Yamamoto
2024 年 7 月 26 日
C FunctionブロックによるC++呼び出しはR2022a以降、namespace内のクラスインポートはR2023a以降となります。ご指摘のエラーの原因として下記の2点が考えられます。
- S-Function Builderのビルドで使用するコンパイラが追加登録されたヘッダファイルのパスを認識できていない。#include <CANoeFDX.h>と指定した際、コンパイラオプションのincludeフォルダにCANoeFDX.h格納フォルダが登録されていないとコンパイラはCANoeFDX.hを見つけることができません。フルパスでヘッダファイルを指定するか、(コンパイラ依存の)includeフォルダ指定用のOS環境変数を用いてヘッダファイル格納フォルダを指定してください。使用コンパイラがMinGW-w64コンパイラの場合、includeファルダ指定用環境変数はCPLUS_INCLUDE_PATH (C++用), C_INCLUDE_PATH (C用)です。
- S-Function Builderのターゲット言語がC++ではない。S-Function BuilderはR2018b以降でターゲット言語としてC++を選択できるようになりました。それ以前のリリースでは、モデルコンフィギュレーションパラメータ→コード生成→言語 の設定に従いますのでこれをC++に変更する必要があります。下図はR2018bリリースノート記載の該当箇所の抜粋です。
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!