LabVIEW에서 Dynamic Link Library (DLL) 호출하기

업데이트 됨 Nov 8, 2020

환경

소프트웨어

  • LabVIEW

프로그래밍 언어

  • C++
  • C
  • C# .NET

C/C ++로 작성된 API를 가지고 있으며, 이를 LabVIEW에서 호출하여 사용하고 싶습니다. C 코드로 DLL (Dynamically Linked Library)을 작성했다면 LabVIEW에서 DLL을 어떻게 호출할 수 있습니까?

DLL 을 호출하려면, 먼저 라이브러리가 C / C++ DLL 인지, Microsoft .NET 어셈블리인지 식별해야 합니다. .NET DLL 은 .NET 어셈블리라고도 불리며, .NET 프로그래밍에 유용하게 사용됩니다. .NET DLL 은 CLR (Common Language Runtime) 및 .NET Framework 를 사용하여 DLL 내부의 함수를 관리합니다.

DLL 이 C / C ++ DLL 인 경우 :
  1. 헤더 파일 (* .h) 이나 함수 원형 정의를 찾습니다.
  2. 호출하고자 하는 함수를 확인합니다. 호출하려는 함수의 매개 변수에 int, char, double 등의 기본 데이터 형식 파라미터가 있는지, 또는 구조체, 배열 혹은 벡터와 같이 복합 데이터 형식이 들어 있는지의 여부를 확인합니다.
  3. 함수에 복합 데이터 유형이 없고 헤더 파일 (*.h) 이 있는 경우 공유 라이브러리 가져오기 마법사를 사용하여 헤더 파일에 함수가 포함된 LabVIEW 라이브러리를 생성할 수 있습니다. 이 옵션은 도구 » 반입 » 공유 라이브러리 (.dll)... 에서 찾을 수 있습니다. 마법사를 계속 진행하십시오.
  1. 헤더 파일이 없으면 라이브러리 함수 호출 노드를 .dll 의 적절한 문서와 함께 사용할 필요가 있습니다. 아래 그림은 팔레트에 있는 라이브러리 함수 호출 노드의 위치를 보여줍니다.
  1. 라이브러리 함수 호출 노드를 더블 클릭하여 노드를 구성하십시오. 구성 창의 함수 탭에서 DLL 경로를 입력하고 호출할 함수를 선택합니다.
  1. 호출할 함수에 복합 데이터 유형이 포함된 경우, 라이브러리 함수 호출 노드의 구성 대화 상자에서 함수 원형 타입을 수동으로 정의해야 합니다. (만약 DLL 이 유형 라이브러리로 컴파일 된 경우, 파라미터 데이터 형식 및 반환 타입은 자동적으로 정의됩니다.) 구성 창의 파라미터 탭으로 이동한 뒤, 파라미터를 추가하고 창의 맨 아래에 있는 함수 원형 타입이 DLL 의 함수 정의와 일치하도록 반환 데이터 타입을 수정합니다.

DLL이 .NET 어셈블리 인 경우 :
  1. LabVIEW에서 .NET 어셈블리를 사용하려면 .NET 팔레트 (연결 ».NET ) 를 사용하여 사용 가능한 모든 기능을 찾을 수 있습니다.
  2. 먼저 .NET 어셈블리 내에서 클래스를 인스턴스화하기 위해 컨스트럭터 노드를 사용합니다. 컨스트럭터 노드를 더블 클릭하여 .NET 생성자 선택 대화 상자를 불러 와서 설정합니다.
  1. 클래스 참조가 연결된 프로퍼티 노드 및 인보크 노드를 활용하여 클래스의 멤버 변수 및 메소드에 접근할 수 있습니다.

Additional Information

복합 데이터 유형이 기본 데이터 유형 (int, double, char, etc.) 이 아닌 데이터 타입의 구조체인 경우, 함수 호출을 단순화하기 위해 C 기반 언어에서 Wrapper DLL 을 만들어 사용할 수 있습니다. C / C++ 구문은 LabVIEW 데이터 유형과 항상 직접적으로 관련되는 것은 아니며, Wrapper DLL 은 복잡한 구조의 내용을 적절히 추출하여 기본 데이터 유형으로 변환할 수 있습니다. 예를 들어, C 에서 char * (문자열 혹은 문자 배열) 이 포함된 C 구조체를 활용하는 DLL 을 사용하고 있다고 가정해 보겠습니다. Wrapper DLL 에는 char * 구조체와 이를 다루는 wrapper 함수를 포함시키고, 원본 DLL 을 호출하도록 구성할 수 있습니다. LabVIEW 에서는, 원본 DLL 이 아닌 Wrapper DLL 을 호출하여 보다 호출 작업을 단순화할 수 있습니다. 혹은, 원본 DLL 의 소스 코드가 있다면, 구조체 대신 char * 를 사용하도록 DLL 을 직접 수정할 수도 있을 것입니다.

 

LabVIEW 예제 탐색기에는 LabVIEW 에서 외부 코드를 올바르게 호출하는 방법에 대한 여러 예제들이 있습니다.  도움말 » 예제 찾기 » 외부 어플리케이션과 통신하기에서 확인해 보시기 바랍니다.