Visual Studio環境で作​成されたC++を必要​なヘッダファイルを追​加しビルドをすると、​「namespace​」や「class」の​定義箇所でエラーとな​ってしまいます。

3 views (last 30 days)
勤
on 25 Jul 2024
Commented: Yorihisa Yamamoto on 26 Jul 2024
別環境(Visual Studio)で作成されたC++での処理をS-Function Builderを用いて実装したいと考えています。
必要なヘッダファイルを追加しビルドをすると、「namespace」や「class」の定義箇所でエラーとなってしまいます。
S-Function BuilderではC++の構文は使用できないでしょうか。

Answers (1)

Toshinobu Shintai
Toshinobu Shintai on 25 Jul 2024
分かりにくくて申し訳ありませんが、C++のコードをインポートする場合、C Functionブロックでないと直接インポートができません。
また、R2023a以降にnamespace内のクラスをインポートできるようになりました。
C Functionブロックの使い方に関して、以下に情報共有させていただきます。
  2 Comments
勤
on 26 Jul 2024
お世話になっております。ご回答ありがとうございます。承知いたしました。
確認ですが、
ご回答より、R2016bではC-Functionが無いため、C++は実行できないとの認識であっているでしょうか。
(S-FunctionではC++の実行は不可)
また、C-Functionはどのバージョンからサポートしているでしょうか。
よろしくお願いいたします。
Yorihisa Yamamoto
Yorihisa Yamamoto on 26 Jul 2024
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リリースノート記載の該当箇所の抜粋です。

Sign in to comment.

Products


Release

R2016b

Community Treasure Hunt

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

Start Hunting!