NI製品ディスカッション

キャンセル
次の結果を表示 
次の代わりに検索 
もしかして: 

ライブラリ関数呼び出しノードでSOファイルを呼び出す

解決済み
解決策を見る

現在、Windows版LabVIEWを用いてsbRIO-9608の開発作業を行っています。

sbRIOはLinux環境で動作しますが、RTターゲットとして接続しデプロイすることでWindows版LabVIEWで開発したVIも動かせるということでこの方法を採っています。

 

ですが、現在Linux上にあるSOファイルをライブラリ関数呼び出しノードで関数をコールができない状況です。パス指定ではsbRIO上でのSOのパスを指定していて、エラーも出ていませんが関数は呼び出されていないです。同じディレクトリ上にVIとSOファイルがいないといけないのではないかと思い、sbRIO上でVIが保存されている場所を探そうとしましたが見つからず、デプロイされたらどこに実行ファイルが作成されるのかがわかりません。

この状況はパス指定が不適切なのが原因でしょうか?

0 件の賞賛
メッセージ1/3
2,000件の閲覧回数
解決策
トピック作成者syoshinsyaが受理

.soファイルは何で開発されたのでしょうか?

NIから提供されているC/C++Toolchainなどをお使いでしょうか?

そうであれば、Windows版でsbRIO-9608ということは、以下のURLの

 

Building C/C++ Applications for NI Linux Real-Time - NI
https://www.ni.com/ja-jp/innovations/white-papers/20/building-c-c---applications-for-ni-linux-real-t...

 

に記載のある「GNU C and C++ Compiler for x64 Linux (Windows host) 2017-2018」を使われたということでしょうか?

 

sbRIOに、リアルタイムアプリケーションをビルドデプロイした場合、

実行ファイルがstartup.rtexeというファイル名で、"/c/ni-rt/startup/”に保存されていると思います。

 

.soファイルは、恐らくですが、/usr/local/lib/ あたりに保存した後、sudo ldconfigコマンドを実行する必要があるかと思います。

 $ sudo ldconfig

このあたりは、Linuxでの.so開発についての話になりますのでネットで検索してみてください。

 

メッセージ2/3
1,872件の閲覧回数

alcky4416様

soファイルはGCCで開発しました。

RTアプリケーションのビルド方法、ファイル名につきましてもご教示ありがとうございます。

呼び出せない原因は特定済みで解決していましたが、

こちらでは解決済みにしていませんでした。

申し訳ございません。

 

原因と解決方法について以下に記します。

デバイスファイルのアクセス権限を与えていなかったことが原因だったようで

ルールファイルを追加し、アクセス権限を設定することでsoが呼び出せました。

 

参照URL:https://qiita.com/hana_shin/items/16c457eed20e8822cab8#1-udev%E3%81%A8%E3%81%AF

0 件の賞賛
メッセージ3/3
1,868件の閲覧回数