우리는 컴파일 된 바이너리를 응용 프로그램과 함께 배포하기 위해 Tcl을 직접 빌드하고 있습니다. 응용 프로그램 자체는 Tcl 라이브러리와 연결되며 내부적으로 API를 사용합니다.사용자 정의 빌드 tcl85.lib에 대한 링커 오류가 ActiveState 배포판의 tcl85.lib에 적용됩니다.
Tcl을 빌드하려면 http://sourceforge.net/projects/tcl/에서 소스를 얻은 다음/win 디렉토리로 이동하고 buildall.vc.bat 파일을 MSVC 설치를 가리 키도록 변경 한 다음 해당 bat 파일을 실행합니다. 예상대로 건물이 작동하고/win/Release_VC11에 출력이 생성됩니다. 보다 구체적으로, tcl85.lib 및 tcl85.dll이 생성됩니다.
Qt C++ 응용 프로그램 내에서이 .lib에 링크하면 링커 오류가 발생합니다. 예를 들어 우리는 ActiveState의 티클 분포의 일환으로 제공되는 tcl85.lib 파일에 연결할 때
commands.obj : error LNK2019: unresolved external symbol __imp_Tcl_AppendResult
referenced in function "int __cdecl CallQMessageBox(void *,struct Tcl_Interp *,
int,char * * const)" ([email protected]@[email protected]@[email protected])
그러나, 링커는 어떤 문제가 미세 빌드하지 않습니다. 우리는 두 경우 모두 Tcl의 정확한 버전을 확인했습니다.
우리는 티클을 구축 MSVC 2012 (Express Edition을)를 사용하고, 빌드 명령이 buildall.vc.bat에서 수정되지 않은 남아있다 : 우리는하지 행운으로 모든 일을하려고했는데
::set OPTS=threads
if not %SYMBOLS%.==. set OPTS=symbols
nmake -nologo -f makefile.vc release OPTS=%OPTS% %1
. 좋아
링크 라이브러리와 관련하여 다른 옵션처럼 보입니다. 이는 다른 플랫폼에서 작동하는 것에 대해 알고 있습니다. –
그냥 생각 : ActiveTcl 라이브러리 또는 소스에서 만든 라이브러리에 대해 컴파일하고 있습니까? IIRC, 컴파일해야하는 것들과 링크해야합니다 ... –