LNK2019 에러 : Visual Studio C ++ 프로젝트에서 LabWindows ™ / CVI ™ 기능을 사용할 때

업데이트 됨 May 28, 2021

해당 제품

소프트웨어

  • LabWindows/CVI Base
  • LabWindows/CVI Full

다른

Microsoft Visual Studio

문의사항

Visual Studio C ++ 프로젝트에서 LabWindows / CVI 함수를 사용하려고하는데 코드를 컴파일하려고하면 다음과 유사한 링크 오류가 발생합니다.

error LNK2019: unresolved external symbol

해결책

Visual Studio C ++ 프로그램에서 LabWindows / CVI 함수를 컴파일하려면 먼저 라이브러리를 import해서 함수를 동적 링크 라이브러리 ( .dll )로 빌드해야합니다. 이후 가져온 라이브러리 ( .lib )를 C ++ 프로젝트에 링크해야합니다. 함수를 DLL에 빌드하고 링크 오류를 방지하려면 다음 단계를 완료하십시오.
  1. 인스트루먼트 드라이버가 LabWindows / CVI에 로드되지 않은 함수를 호출하려는 경우 , Instrument >> Load 를 통해 로드해야합니다. 이후, 대화 상자에서 해당 .fp 파일을 찾은 다음 Load를 클릭합니다.
  2. File>>Open>>Function Tree (*.fp)로 이동하여 기능 트리 편집기(Function Tree Editor)를 실행합니다. 열리는 대화 상자에서 해당 .fp 파일을 찾은 다음 Load를 클릭합니다.
  3. Options>>Create DLL Project을 통해 DLL 프로젝트 를 생성하려면, 경로와 이름을 지정한 다음 Save을 클릭합니다. 다음 대화 상자가 나타나고 DLL 프로젝트를 즉시 로드해야 하는지 묻습니다. Yes를 클릭합니다.
  1. DLL을 컴파일하기 전에 컴파일을 구성해야합니다. 첫째, Build>>Target Type에서 빌드 대상 유형을 설정하고 확인 다음 Dynamic Link Library에 체크 표시가 있는지 확인합니다. Build>>Configuration을 통해 프로젝트를 릴리스 모드로 설정할 수도 있고 릴리스 옆에 체크 표시가 있는지 확인할 수도 있습니다.
  2.  Build>>Target Settings을 통해 다음 설정을 변경합니다.
a. 아래 그림과 같이 Run-time support Full run-time engine으로 변경합니다.

b. Type Library클릭하고 Add type library resource to DLL를 선택 취소합니다. 이 항목을 선택 취소하지 않으면 컴파일 프로세스 중에 이러한 유형에 대한 정의를 찾을 수 없음과 유사한 유형 정의 오류가 표시됩니다.


그런 다음 OK을 클릭하여 창을 닫습니다.
  1. LabWindows / CVI2012 또는 이전 버전 이전에 DLL을 컴파일하려면 Build >> Create Release Dynamic Link Library를 선택하십시오. LabWindows / CVI 2013에서 Build >> Build를 선택합니다. 이렇게하면 사용해야하는 LabWindows / CVI 함수가 포함 된 동적 링크 라이브러리 ( .dll )와 가져 오기 라이브러리 (.lib)가 생성됩니다. 이제 가져 오기 라이브러리를 Visual Studio 프로젝트에 연결할 수 있습니다.
  2. Visual Studio C ++ 프로젝트를 열고 Project>>Properties으로 이동합니다. 속성 창에서 Configuration Properties>>C/C++>>General 합니다. Additional Include Directories를 클릭합니다. 그런 다음 목록에서 <편집 ...> 선택합니다.
  1. 열리는 대화 상자에서 New Line버튼을 클릭하고 헤더 파일이 포함 된 디렉터리를 추가 한 다음 OK 을 클릭합니다.
  1. Configuration Properties>>Linker>>Input을 선택 합니다. Additional Dependencies을 클릭 한 다음 나타나는 화살표를 클릭하고 <Edit...>을 선택합니다.
  1. 열리는 대화 상자에서 가져온 라이브러리의 경로를 Additional Dependencies 에 추가합니다.
  1. Visual Studio 프로젝트를 컴파일하면 링크 오류가 제거됩니다. 이 오류가 계속 표시되면 LabWindows / CVI 함수가 직접 호출되고있는 것일 수 있습니다. 위 단계에 따라 모든 함수에 대한 dll을 생성해야합니다.

추가 정보

사용하려는 함수가 이미 가져 오기 라이브러리와 함께 DLL에 번들되어있는 경우 1-6 단계를 건너 뛸 수 있습니다.

여전히 링크 오류가있는 경우 이름 지정 손상 문제 일 가능성이 큽니다. C ++를 사용하면 특정 함수 (예 : 객체 지향 프로그래밍의 메서드)를 재정의 할 수 있습니다. 일부 이름 오류를 해결하기 위해 C ++ 컴파일러는 이름 식별자를 고유하게 만드는 이름 지정 오류 함수를 추가했습니다.
따라서 C ++ 프로그램에서 C 라이브러리를 호출 할 때 C ++ 컴파일러는 이름을 수정할 필요가 없음을 알아야합니다. 이 경우 C ++ 컴파일러에서 만든 이름이 C 코드의 이름과 다르며 링크 오류가 표시됩니다.
이 문제를 해결하려면 .c 파일과 관련된 헤더 파일 (.h)에 다음 코드를 추가해야합니다.
#ifdef __cplusplus
extern "C" {
#endif
    /* The functions you want to keep the same in C and C++ */
#ifdef __cplusplus
}
#endif