문제

My Env는 Windows8.1 (64 비트)이며 Visual Studio 2010을 사용합니다.

System32, SyswOW64 (Win8 64 비트를 사용하기 때문에)

에있는 모든 * .dll 파일을 넣었습니다.

및 링크 위치 VC 2010 x64 시스템에 대한 * .lib 파일.

물론 FOLDER LIB FORDERS를 추가합니다. 폴더 등을 포함합니다 .. etc ..

그러나 "Pthread-Used"프로젝트를 컴파일하려고하면 치명적인 오류가 발생했습니다.

-source

#include<pthread.h>
#include<stdio.h>
int doit_id,trd_id;
pthread_t trd;
void *doit(void *data){
    doit_id = (int)data;
    return 0;
}
int main(){
    trd_id=pthread_create(&trd,NULL,doit,0);
    return (0);
}
.

- 오류

1.obj : error LNK2019: unresolved external symbol __imp__pthread_create (referenced in function _main)
C:\Users\~program Location~ : fatal error LNK1120: 1 unresolved externals
.

제발, 나를 도와주세요

도움이 되었습니까?

해결책

main()__imp__pthread_create라는 이름을 찾고 있다는 사실은 32 비트 타겟에 대한 프로젝트를 작성하고 있음을 나타냅니다.

64 비트 Win32 Pthread 라이브러리에는 pthread_create()의 이름이있는 Import 기호가 있습니다.

__imp_pthread_create
.

32 비트 Win32 Pthread Libary는 다음과 같습니다.

__imp__pthread_create
.

32 비트 LIB의 추가 밑줄은 GENALACODICETAG 코드가 찾고있는 이름 규칙과 일치하므로 32 비트 대상에 대해 구축하고있는 표시입니다.여분의 밑줄은 Win32 PThread Library가 사용하는 CDECL 호출 규칙에서 x86이 처리하는 이름의 일부입니다.x64는 CDECL 호출 규칙을 사용하지 않습니다 (x64 단일 통관 규칙 만 있음). 그리고 밑줄은 x64 빌드에서 기호가 붙지 않습니다.

32 비트 Pthread 라이브러리를 다운로드하거나 빌드하거나 프로젝트 구성을 변경하여 64 비트 대상을 위해 빌드해야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top