SOLID SOLIDコミュニケーションフォーラム

SOLIDコミュニケーションフォーラム

SOLIDスターターキットについては、購入したお客様と直接に個別での電話やメールでのユーザーサポートは行っておりません。
お問い合わせについては、本掲示板についてトピックを作成のうえ、ご記入ください。トピック作成については、購入時に同梱されている技術サポート用のIDとパスワードを用いてログインが必要にです。参照については、ログインの必要ありません(ただし、ボード固有フォーラムは、参照にもIDが必要です)。

ログインはこちら

cppファイルを含むプロジェクトのビルド方法  

  RSS

(@skit-rz)
メンバー
参加: 7年 前
投稿: 46
23/05/2019 6:40 pm  

お世話になっております。

SOLID-IDEでタイトルのようにcとc++ファイルが混合したプロジェクトをビルドしたいと考えています。

Main.c/h,kernel_cfg.c/h,以外に例えばhoge.cpp/hを追加したものをビルドするイメージです。

自身で行った設定として、デバッグ->"プロジェクト名"のプロパティ->構成プロパティ->C/C++以下をいじりました。

全般のコマンド名をclang++に、コンパイル言語の選択を「C++ヘッダーファイルとしてコンパイル」に、またコマンドラインの追加のオプションに"-std=c++14"を追加するなどしましたが、startup.cでエラーが発生し、ビルドできませんでした。以下にその時のエラーメッセージを記します。

M:\rtos\toppers_asp3\asp3\kernel\startup.c(204): undefined reference to `_kernel_call_terrtn

collect2.exe: error: ld returned 1 exit status

エラーの意味だけなら、startup.cにあるcall_terrtn関数(_kernel_call_rtnのエイリアス)の中身がdefineされてるkernel_cfg.cが見えていないように見えます。

 

ビルド構成の設定が足りてないもしくは間違っているのだとは思うのですが、それが分からず困っております。

初心者の質問で恐縮ですが、何卒よろしくお願いいたします。

 


引用
(@tokuyama)
メンバー Moderator
参加: 7年 前
投稿: 44
29/05/2019 5:24 pm  

回答が遅くなり申し訳ございません。

C++の使用については、デフォルトのままで、特に追加で設定は必要ありません。

"-std=c++14"オプションを追加した場合の挙動については確認しておりません。

 


返信引用
(@tokuyama)
メンバー Moderator
参加: 7年 前
投稿: 44
29/05/2019 5:25 pm  

念のための確認ですが SOLID は SOLID-1.3.0.exe にアップデートされておられますでしょうか。


返信引用
(@skit-rz)
メンバー
参加: 7年 前
投稿: 46
30/05/2019 5:33 pm  
返信ありがとうございます.特に設定は必要ないのですね.
 
アップデートをしていなかったので先ほどSOLID-1.3.0.exeをダウンロード,実行してアップデート,一応再起動までしました.
そしてcppファイルを含んだプロジェクトを,cだけでできていた設定でビルドすると,
Link:
8> C:\Users\admin\Documents\SOLID-IDE\Projects\cpptest\Debug_clang\exeClang_SOLID\cpptest\cpptest_all.o:(.rodata+0x188): undefined reference to `hello_taskcollect2.exe: error: ld returned 1 exit status
8> '
8>clang++.exe : error : linker (via gcc) command failed with exit code 1 (use -v to see invocation)
というようなエラーでビルドできませんでした.(cpptestがプロジェクト名です.)
hello_task()の中身はhello.cppに書いているのですが,ファイルをhello.cにすればビルドできます.
 
念のため,ヘルプ→About SOLID-IDEで確認すると
Version...1.2.21.0
PARTNER-Jet2...6.23.009
SOLID-IDE...1.0.9
exeGCC4-s002...4.00.0004
でした.
 
よろしくお願いいたします.

返信引用
(@tokuyama)
メンバー Moderator
参加: 7年 前
投稿: 44
04/06/2019 10:31 am  

SOLID-OS のカーネル TOPEPRS/ASP3 はC言語で書かれていますので、C++ のシンボルはそのままでは探せません。

hello.cpp に extern "C" { } で囲んで、C言語から呼び出すための wrapper を作っていただくのが良いと思います。

 


返信引用
(@skit-rz)
メンバー
参加: 7年 前
投稿: 46
04/06/2019 2:57 pm  

回答くださりありがとうございます.

extern "C"のつけ方を間違えており,正しくラッパーを作ることで無事にビルド,デバッグすることができました.

 

精進します,ありがとうございました.


返信引用
Share:
  
動作中

ログイン または 登録 してください