텍스트 기반 프로그래밍 언어로부터 공유 라이브러리를 만드려면, LabVIEW에서 원형을 만든 후 코드의 세부사항을 모두 완성해야 합니다. LabVIEW가 이 함수 원형을 생성하도록 허용하면, 공유 라이브러리의 기본 코드 구문이 유효함을 확인하는데 도움이 됩니다. 생성하는 원형 소스 파일은 .c 파일이며 전달하려는 파라미터에 대한 C 선언을 포함합니다.

다음 단계를 따라 원형 소스 파일 myshared.c를 만듭니다.

  1. 새 VI를 열고 이 VI를 배열 평균으로 저장합니다. 이 함수는 값 배열의 평균을 계산합니다.
  2. 블록다이어그램에 [라이브러리 함수 호출 노드]를 추가합니다.
  3. [라이브러리 함수 호출 노드]에서 마우스 오른쪽 버튼을 클릭한 후 바로 가기 메뉴에서 설정을 선택하여 라이브러리 함수 호출 대화 상자를 엽니다.
  4. 라이브러리 이름 또는 경로 컨트롤을 비워 둡니다.
노트 라이브러리 이름 또는 경로 컨트롤을 사용하여 [라이브러리 함수 호출 노드]가 호출하는 공유 라이브러리를 지정합니다.
  1. 다음 일반 스펙을 입력합니다:
    1. 함수 이름 필드에 avg_num을 입력합니다.
    2. 호출 형식 필드의 C 컨트롤을 선택합니다.
  2. 다음 스펙을 사용하여 반환값을 정의합니다:
    1. 라이브러리 함수 호출 대화 상자의 파라미터 탭을 탐색합니다.
    2. 반환 타입이름 컨트롤의 기본값을 보다 설명적인 이름인 에러로 변경합니다.
    3. 타입 풀다운 메뉴에서 숫자형을 선택합니다.
    4. 데이터 타입 풀다운 메뉴에서 부호있는 32 비트 정수를 선택합니다.
  3. 다음 스펙을 사용하여 a 파라미터를 정의합니다:
    1. 파라미터 리스트 오른쪽에 파라미터 추가 버튼을 클릭합니다.
    2. 이름 필드의 arg1 기본값을 a로 대체합니다.
    3. 타입 풀다운 메뉴에서 배열을 선택합니다.
    4. 데이터 타입 풀다운 메뉴에서 4 바이트 단정도를 선택합니다.
    5. 배열 포맷 풀다운 메뉴에서 배열 데이터 포인터를 선택합니다.
  4. 다음 스펙을 사용하여 크기 파라미터를 정의합니다:
    1. 파라미터 리스트 오른쪽에 파라미터 추가 버튼을 클릭합니다.
    2. 이름 필드의 arg2 기본값을 크기로 대체합니다.
    3. 타입 풀다운 메뉴에서 숫자형을 선택합니다.
    4. 데이터 타입 풀다운 메뉴에서 부호있는 32 비트 정수를 선택합니다.
    5. 전달 풀다운 메뉴에서 을 선택합니다.
  5. 다음 스펙을 사용하여 avg 파라미터를 정의합니다:
    1. 파라미터 리스트 오른쪽에 파라미터 추가 버튼을 클릭합니다.
    2. 파라미터 필드의 arg3 기본값을 avg로 대체합니다.
    3. 타입 풀다운 메뉴에서 숫자형을 선택합니다.
    4. 데이터 타입 풀다운 메뉴에서 4 바이트 단정도를 선택합니다.
    5. 전달 풀다운 메뉴에서 값의 포인터를 선택합니다.
  6. 함수 원형 필드가 다음과 같이 반환값과 세 파라미터를 올바른 순서로 디스플레이하는지 확인합니다. int32_t avg_num(float *a, int32_t size, float *avg);
노트 함수 원형 필드에서 볼 수 있는 구문은 기술적으로 정확합니다. 하지만 다음 섹션에서 [라이브러리 함수 호출 노드]가 생성하는 .c 파일이 보다 정확합니다. 왜냐하면 첫 번째 파라미터가 float a[]로 나타나기 때문입니다.
  1. 확인 버튼을 클릭하여 셋팅을 저장하고 대화 상자를 닫습니다.
  2. [라이브러리 함수 호출 노드] 아이콘이 셋팅을 반영하기 위해서 업데이트됩니다.
  3. [라이브러리 함수 호출 노드]에서 마우스 오른쪽 버튼을 클릭한 후 바로 가기 메뉴에서 C 파일 생성을 선택합니다.
  4. 파일을 myshared.c로 저장합니다.
노트 이 예제에서는 .c 소스 파일을 사용합니다. C++ 라이브러리를 사용하여 작업할 때, 소스 파일의 확장자를 .cpp로 변경합니다.

C++ 이름 데코레이션

헤더 파일에서 C++ 컴파일러 함수 반출 지정자(C++ compiler function export directive)인 extern "C"{}를 사용하여, 이름 변환(name mangling)이라는 프로세스를 실행함으로써 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 파일을 완성합니다.