LabVIEW에서 DLL (Dynamic Link Library) 호출

업데이트 됨 Nov 10, 2020

C / C ++로 작성된 코드 / API가 있는데이를 LabVIEW에서 호출 할 수 있기를 원합니다. C 코드로 DLL (Dynamically Linked Library)을 만든 후 LabVIEW에서 DLL을 어떻게 호출합니까?

DLL을 호출하려면 먼저 라이브러리가 C / C ++ DLL인지 Microsoft .NET Assembly / .NET DLL인지 식별해야합니다.

가지고있는 라이브러리 유형을 확인하려면 DLL 파일에 대한 PE (Portable Executable) 헤더를 확인할 수 있습니다.

DLL은 C / C ++ DLL입니다.

  1. 헤더 파일 (* .h) 또는 함수 프로토 타입 정의를 찾습니다. 헤더 파일이 없으면 4 단계로 건너 뜁니다.
  2. 호출하려는 기능을 식별하십시오. 함수의 매개 변수에 원시 데이터 유형 매개 변수 (예 : int, char, double 등)가 포함되어 있는지 또는 복잡한 데이터 유형 (예 : 구조체, 배열 또는 벡터)이 포함되어 있는지 확인하십시오.
  3. 함수에 복잡한 데이터 타입이없고 헤더 파일 (* .h)이있는 경우, 공유 라이브러리 가져 오기 마법사를 사용하여 헤더 파일의 함수를 포함하는 LabVIEW 라이브러리를 생성 할 수 있습니다. 이 옵션은 도구»가져 오기 »공유 라이브러리 (.dll) ... 에서 찾을 수 있습니다. 마법사를 계속합니다.
  1. 헤더 파일이 없으면 .DLL의 적절한 문서와 함께 라이브러리 함수 호출 노드 를 사용해야합니다. 아래 그림은 팔레트에서 라이브러리 함수 호출 노드의 위치를 보여줍니다.
  1. 라이브러리 함수 호출 노드를 두 번 클릭하여 노드를 구성하십시오. 구성 창의 기능 탭에서 DLL 경로를 입력하고 호출 할 기능을 선택합니다.
  1. 호출하려는 함수에 복잡한 데이터 유형이 포함되어 있으면 라이브러리 함수 호출 노드의 구성 대화 상자에서 함수 프로토 타입을 수동으로 정의해야합니다 (DLL이 유형 라이브러리로 컴파일 된 경우 매개 변수 데이터 반환 유형은 자동으로 정의됩니다). 구성 창의 매개 변수 탭으로 이동합니다. 여기에서는 창 하단의 함수 프로토 타입이 DLL의 함수 정의와 일치 할 때까지 매개 변수를 추가하고 반환 유형을 수정합니다.


DLL은 .NET 어셈블리입니다.

  1. LabVIEW에서 .NET 어셈블리를 사용하려면 .NET 팔레트 (Connectivity ».NET ) 를 사용하여 사용 가능한 모든 함수를 찾으십시오.
  2. .NET 어셈블리 내에서 클래스를 인스턴스화하려면 먼저 생성자 노드를 사용하십시오. 생성자 노드를 두 번 클릭하여 .NET 생성자 선택 대화 상자를 표시하면됩니다.

  1. 속성 및 호출 노드를 사용하여 생성자 노드에서 속성 또는 호출 노드로 클래스 참조를 간단히 연결하여 클래스의 속성 및 메서드에 액세스합니다. 이것은 아래 VI 스 니펫에 표시됩니다.

참고 :이 이미지는 프로젝트에서 재사용 할 수있는 LabVIEW 코드가 포함 된 LabVIEW 스 니펫입니다. 스 니펫을 사용하려면 이미지를 마우스 오른쪽 버튼으로 클릭하고 컴퓨터에 저장 한 다음 파일을 LabVIEW 다이어그램으로 드래그하십시오.

추가 정보

.NET DLL은 .NET 어셈블리라고도하며 .NET 프로그래밍에 유용합니다. .NET DLL은 CLR (공용 언어 런타임) 및 .NET Framework를 사용하여 DLL 내의 함수를 관리합니다.

복잡한 데이터 유형이 기본 데이터 유형 (int, double, char)보다 많은 구조체 인 경우 C 기반 언어에서 래퍼 DLL을 만들어 함수 호출을 단순화 할 수 있습니다.

C / C ++ 구조는 항상 LabVIEW 데이터 유형과 직접 연관되는 것은 아니며, 래퍼 DLL은 복잡한 구조의 내용을 적절하게 추출하여 원시 용어로 변환 할 수 있습니다. 예를 들어, 사용중인 DLL은 char * (문자열 또는 문자 배열)를 포함하는 C의 구조체를 사용합니다. 래퍼 DLL에는 char *를 구조체에 배치하고 차례로 원래 DLL을 호출하는 char * 매개 변수가있는 래퍼 함수가 포함될 수 있습니다. LabVIEW에서 대신 래퍼 DLL 함수를 호출 할 수 있습니다. 또는 DLL 소스 코드가있는 경우 구조체 대신 char *를 사용하도록 DLL을 직접 수정할 수 있습니다.

LabVIEW 예제 파인더에는 LabVIEW에서 외부 코드를 올바르게 호출하는 방법에 대한 완전하고 기능적인 예제가 있습니다. 도움말 >> 예 찾기 >> 외부 응용 프로그램과 통신을 참조하십시오.