TS工房 -技術者と研究者とモノづくり-

音楽や芸術のスタジオやアトリエの様な雰囲気の工房で、研究者として・技術者として”ものづくり”をしたい

MENU

【LabVIEW】LabVIEWにCプログラムを組み込む方法

最近LabVIEWの話題ばかり。他のことにも手を出したいけれども、LabVIEWウィークが続いているのでこればかりは仕方が無い。

さて、今回はLabVIEW上で、Cプログラムを動かす方法についてです。一年ほど前に調べて成功していたんですが、当時は記録を一切取っておらず、またCを組み込みたいなと思っても記憶がゼロ。Google It!!ということで諸先輩のお力をお借りして、今回は簡単にでもまとめておきたいと思います。

 

1.C/C++でdllファイルを作る

そもそもdllファイルとは?

Windowsのシステムディレクトリを見ると星の数ほどdllが存在します。このよく分からないdllファイルですが、実はC/C++で自分用にも作れます。これができるようになってくるとプログラムがうまくなったような自己満足に浸れます。

さて、dllはダイナミックリンクライブラリ(Dynamic Link Libraries)の略です。動的リンクは実行時にリンクされるライブラリで、これにより、実行可能ファイルから別のファイルに格納された関数を呼び出したり、リソースを使用したりすることができます。要は今回で言えば、C/C++で作成した自作関数をdllファイルとして一度作成し、このdllファイルをLabVIEW側で読むことにより、関数を呼び出すことができると言うことです。

 

C/C++でdllファイルを作る

①VisutalStudio新規プロジェクト>ダイナミックリンクライブラリ作成

ソリューションとプロジェクトを同じディレクトリに配置するはオフにしておきましょう。習慣です。

 

②プロジェクトプロパティから追加のインクルードディレクトリを設定。バージョンは違うけど基本的に以下のディレクトリにNI 提供のヘッダファイルなどが入っている。

C:\Program Files (x86)\National Instruments\LabVIEW 2018\cintools

 

ソースコードを適当に書く

 

④ビルドするとDebugフォルダにdllファイルが生成される

エラーが吐き出される場合はエラーコードを確認。プロジェクトファイルのプロパティからC/C++の「プリコンパイル済みヘッダーは使用しない」にしておくとよい。デバックではないよ。

 

ちなみに、③のソースコードを、適当にmath.cppとか作って以下のようなのをテストで書いておくとよいでしょう。和と差を計算できます。

#include "extcode.h"
#include "pch.h"
#include <windows.h>

_declspec (dllexport) int Sum(int a, int b);
_declspec (dllexport) int Sub(int a, int b);

_declspec (dllexport) int Sum(int a, int b){return(a + b);}

_declspec (dllexport) int Sub(int a, int b){return(a - b);}

 

 

2.LabVIEWでdllファイルを呼び出す

 

ライブラリ関数呼び出しノード

LabVIEWでは、ライブラリ関数呼び出しノードを使用することで、CやC++で作成されたDLLを呼び出すことができます。ライブラリ関数呼び出しノードでは、使用するDLLやそのDLLの中から呼び出す関数を選択することができます。

 

①ブロックダイアグラム上で配置

接続>ライブラリ&実行可能ファイル>ライブラリ関数呼び出しノード

 

②dllファイルを選択する

ライブラリ関数呼び出しノード>構成>ライブラリ名またはパス

呼び出し規約はC(デフォルト)のままとする

 

③パラメータを設定する

関数名を設定する。

返り値をタイプとinputパラメータを設定する。今回はC言語で書いた関数の引数は二個なので数値のパラメータを2個定義しておく。

 

 

とりあえずざっとこのような流れでLabVIEW上でCプログラムを読み込みすることができる。一年ぶりだっため途中つまずくところが多かった。使いながらもう少し内部について知っておきたい。

 

参考にしたページ