関数プロトタイプを作成する
- 更新日2025-08-27
- 6分で読める
テキストベースのプログラミング言語で共有ライブラリを作成するには、LabVIEWで関数プロトタイプを作成し、コードの詳細を入力します。LabVIEWでこの関数プロトタイプを生成できるようにすると、共有ライブラリのコードの基本構文が有効であることを確実にできます。作成するプロトタイプのソースファイルは.cファイルで、渡すパラメータのC宣言が含まれます。
以下の手順に従って、myshared.cのプロトタイプのソースファイルを作成します。
- 新規のブランクVIを開いて、Array Averageという名称でVIを保存します。この関数により、値の配列の平均値が求められます。
- ブロックダイアグラムにライブラリ関数呼び出しノードを追加します。
- ライブラリ関数呼び出しノードアイコンを右クリックし、ショートカットメニューから構成を選択して、ライブラリ関数呼び出しダイアログボックスを開きます。
- ライブラリ名またはパス制御器を空のままにします。
- 以下の一般仕様を入力します。
- 関数名フィールドに[avg_num]と入力します。
- 呼び出し規約フィールドからCを選択します。
- 以下の仕様を使用して、戻り値を定義します。
- ライブラリ関数呼び出しダイアログボックスのパラメータタブに移動します。
- 名前フィールドでデフォルト名をreturn typeからより分かりやすいerrorという名前に変更します。
- タイププルダウンメニューから数値を選択します。
- データタイププルダウンメニューから符号付き32ビット整数を選択します。
- 以下の仕様を使用して、「a」パラメータを指定します。
- パラメータリストの右のパラメータを追加ボタンをクリックします。
- 名前フィールドにあるデフォルト名のarg1をaという名前に変更します。
- タイププルダウンメニューから配列を選択します。
- データタイププルダウンメニューから4バイト単精度を選択します。
- 配列形式プルダウンメニューから配列データポインタを選択します。
- 以下の仕様を使用してsizeパラメータを指定します。
- パラメータリストの右のパラメータを追加ボタンをクリックします。
- 名前フィールドにあるデフォルト名のarg2をaという名前に変更します。
- タイププルダウンメニューから数値を選択します。
- データタイププルダウンメニューから符号付き32ビット整数を選択します。
- 渡す形式プルダウンメニューから値を選択します。
- 以下の仕様を使用してavgパラメータを指定します。
- パラメータリストの右のパラメータを追加ボタンをクリックします。
- パラメータフィールドにあるデフォルト名のarg3をavgという名前に変更します。
- タイププルダウンメニューから数値を選択します。
- データタイププルダウンメニューから4バイト単精度を選択します。
- 渡す形式プルダウンメニューから値へのポインタを選択します。
- 関数プロトタイプフィールドに戻り値が表示され、3つのパラメータが以下の順序で正しく表示されていることを確認してください。 int32_t avg_num(float *a, int32_t size, float *avg);
| メモ 関数プロトタイプフィールドに表示される構文は技術的に正確です。ただし、最初のパラメータはfloat a[]として表示されるため、ライブラリ関数呼び出しノードが生成する.cファイルの正確性はより高くなります。 |
- OKボタンをクリックして設定を保存し、ダイアログボックスを閉じます。
- 設定が反映されるように「ライブラリ関数呼び出しノード」アイコンが更新されることに注目してください。
- ライブラリ関数呼び出しノードを右クリックし、ショートカットメニューからCファイルを作成を選択します。
- ファイルをmyshared.cとして保存します。
| メモ この例では、.cソースファイルを使用します。C++ライブラリを使用して作業する場合、ソースファイルの拡張子を.cppに変更します。 |
C++の名前装飾を回避する
C++コンパイラでのマングル処理と呼ばれるプロセスにより、エクスポートされた関数名にプラットフォーム依存が発生することを避けるため、ヘッダファイルで、以下のサンプルコードのようにC++コンパイラ関数エクスポート指令でextern "C"{}を使用してください。
extern "C" { int32_t MyDLLFunction(int32_t nInput, uint32_t nOutput, void *arg1); }
int32_t MyDLLFunction(int32_t nInput, uint32_t nOutput, void *arg1)
{
/* Insert Code Here */
}
| メモ 関数のC++宣言を無効にすると、コンパイラは関数の多態性バージョンを作成できません。 |
関数プロトタイプを作成した後、.cファイルを完成させます。