RT DLL을 빌드하려고 할 때 Undefined symbol '_RTmain' 에러가 발생합니다

업데이트 됨 Jul 27, 2020

해당 제품

소프트웨어

  • LabWindows/CVI Full

문의사항

LabWindows™/CVI™에서 Real-Time DLL을 빌드하려고 하면 다중 정의 또는 정의되지 않은 심볼에 대한 에러가 발생합니다.
 

error: Multiply defined symbol '_StartupLibraryInit' in 'cvi.lib' and 'cvistart.lib'
 

error: Multiply defined symbol '_StartupLibraryCleanup' in 'cvi.lib' and 'cvistart.lib'
 

error: Undefined symbol '_RTmain' referenced in "c:\program files (x86)\national instruments\cvi2015\bin\msvc\cvistart.lib"

해결책

DLL에 RTmain 엔트리 포인트를 정의하지 않고 RTIsShuttingDown() 함수를 사용하면 이 에러가 발생할 수 있습니다. RTIsShuttingDown()은 에러 없이 실행되기 위해 RTmain 엔트리 포인트를 필요로 하는 유일한 함수입니다. 

RTIsShuttingDown() 함수 도움말에 나와 있는 아래 예제 코드를 참조하십시오.  

void CVIFUNC_C RTmain (void)


{

if (InitCVIRTE (0, 0, 0) == 0)

return; /* out of memory */

/* your initialization code */

while (!RTIsShuttingDown ()

{

/* your code */

}

/* your cleanup code */

CloseCVIRTE ();

}