Я не могу использовать pthread в оконной платформе

StackOverflow https://stackoverflow.com//questions/20020264

  •  21-12-2019
  •  | 
  •  

Вопрос

Моя среда — Windows8.1 (64-разрядная версия) и я использую Visual Studio 2010.

Я поместил все файлы *.dll в system32, SYSWOW64 (потому что я использую 64-битную версию Win8).

и ссылку на расположение файла *.lib для x64-системы с VC 2010.

конечно, я добавляю дополнительные папки lib forders.., включить папки..и т. д..

но когда я пытаюсь скомпилировать проект с использованием pthread, возникает фатальная ошибка.

-источник

#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() с именем:

__imp_pthread_create

32-битная библиотека Win32 pthread имеет:

__imp__pthread_create

Обратите внимание на дополнительное подчеркивание в 32-битной библиотеке, которое соответствует соглашению об именах, которое main() ищет, поэтому это признак того, что вы создаете 32-битную цель.Дополнительное подчеркивание является частью того, как сборки x86 обрабатывают имена в соглашении о вызовах cdecl, используемом библиотекой Win32 pthread.x64 не использует соглашение о вызовах cdecl (x64 имеет только одно соглашение о вызовах), и символы подчеркивания не добавляются к символам в сборках x64.

Я думаю, вам нужно либо загрузить, либо собрать 32-битную библиотеку pthread, либо изменить конфигурацию проекта для сборки для 64-битной цели.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top