サンプルコードとドキュメント

LabVIEWでビルドしたDLLをC++から呼び出す (クラスタ)

概要

LabVIEWで作成したクラスタを含むDLLを、VC++から呼び出すためのコード例をご紹介します

詳細

LabVIEWのクラスタは、C++などでいわゆる構造体として扱われます。

クラスタを入出力とするVIから生成したDLLに対してアクセスするためには、以下のようなコードで実装が可能です。

================================================================

#include "stdafx.h"

#include <Windows.h>

#include <iostream>

#include <cstdint>

using namespace std;

struct Input_t{

  int32_t A;

  int32_t B;

} variable_t;

typedef void (*FUNC)(Input_t *,int32_t *);

int _tmain(int argc, _TCHAR* argv[])

{

  HINSTANCE hDLL = LoadLibrary(TEXT("C:\\My_DLL\\Cluster_dll.dll"));

  if(hDLL == NULL){

  cout << "error" << endl; // error check

  }

  FARPROC lpIO = GetProcAddress(HMODULE(hDLL),"Cluster_dll");

  //define type

  FUNC myFunc;

  myFunc = FUNC(lpIO);

  //define returned variable

  int32_t myValue = 0;

  Input_t AB;

  AB.A = 5;

  AB.B = 2;

  //call function

  myFunc(&AB,&myValue);

  cout << myValue << endl;

  getchar();

  FreeLibrary(hDLL);

  return 0;

}

================================================================

◎ 実行結果

Result.png

◎ VIのブロックダイアグラム構造

Cluster_BD.png

必要なもの

ソフトウェア

・LabVIEW + Application Builder

・C++開発環境

NIコミュニティのサンプルコード交換のサンプルコードは、MIT Licenseによりライセンス供与されています。

寄稿者