1

pthreads를 사용하는 VS2008로 빌드 된 작은 C++ Win32 명령 줄 앱이 있습니다. 독립 실행 형 실행 파일로 응용 프로그램을 배포하려면 정적으로 pthreads에 연결하십시오. 프로젝트 속성의 링커 -> 입력 페이지에서 pthreadVC2.lib를 추가 종속성에 추가했습니다. 프로젝트가 빌드되지만 lib 파일에 정적으로 링크를 연결 했음에도 불구하고 실행 파일에 pthreadVC2.dll이 필요합니다.pthread static linking

Depends.exe는 실제로 pthreadVC2.dll을 종속성으로 나열합니다.

이유가 무엇인가요? 당신이 정적으로 연결하려면 감사

답변

4

, 당신은 정적 라이브러리에 연결해야합니다. pthreadVC2.lib 파일은 정적 라이브러리가 아닌 DLL의 스텁입니다.

정적 라이브러리를 사용하려면 정적 첨부에 대한 규칙을 따라야합니다. 예를 들어 pthread_win32_process_attach_np으로 전화해야합니다. Windows DLL 스키마가 일반적으로 수행하는 라이브러리 (프로세스 연결, 스레드 연결, 스레드 분리 및 프로세스 분리시)로 호출해야합니다.

편집 :이 단계는 해당 링크에서 최신 설명서에 따라 필요하지 않을 수 있습니다 : 버전 2.9.0의로

, 정적 라이브러리를 사용하여 내장 MSC 또는 GCC 중 하나는 것입니다 RT가 후크 포함 응용 프로그램의 시작/종료시 자동으로 pthread_win32_process _ * _ np 루틴을 호출하십시오.

+0

나는 본다. 설명 해줘서 고마워. –

+0

왜, 왜 API를 계속 변경합니까? 방금 새로운 윙 어로 프로그램을 컴파일하려고했는데'pthread_win32_process_attach_np'가 이제는 완전히 없어졌습니다 ... – vy32

+0

@ vy32 : pthread의 [README] (ftp://sourceware.org/pub/pthreads-win32/README) 이 함수와 그 친구들은 "이식성이 없다"(그러므로 "win32"). 이것이 아마도 밍고에서 빠진 이유 일 것입니다. 자세한 설명은 [README.NONPORTABLE] (ftp://sourceware.org/pub/pthreads-win32/prebuilt-dll-2-9-1-release/README.NONPORTABLE) – Isaac