Pergunta

Meu env é Windows8.1 (64 bits) e usando o Visual Studio 2010.

Eu colocar todos *.arquivos dll no system32 , SYSWOW64(porque eu uso o win8 64bits.)

e o link do local onde *.arquivo lib para x64-sistema com VC 2010.

é claro que eu adicione mais pasta lib forders.., incluir pastas..etc..

mas quando eu tento compilar "pthread-usado projeto", fatal erro ocorrer.

-fonte

#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);
}

-erro

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

por favor,me ajudar

Foi útil?

Solução

O fato de que seu main() procura por nome __imp__pthread_create indica que você está construindo o seu projecto para uma versão de 32 bits de destino.

A versão de 64 bits do Win32 pthread, a biblioteca de importação símbolo para pthread_create() com o nome de:

__imp_pthread_create

A versão de 32 bits do Win32 pthread libary tem:

__imp__pthread_create

Nota o sublinhado extra de 32 bits lib - que coincide com a convenção de nome que o seu main() está procurando, então, é uma indicação de que você está construindo para uma versão de 32 bits de destino.O extra sublinhado é parte de como x86 constrói tratar de nomes no cdecl convenção de chamada utilizado pelo Win32 biblioteca pthread.x64 não usar um cdecl convenção de chamada (x64 tem apenas uma única convenção de chamada) e sublinhados não são anexados aos símbolos em x 64 versões.

Eu acho que você precisa baixar ou criar a versão de 32 bits biblioteca pthread ou alterar a configuração do seu projeto de construir para uma versão de 64-bit alvo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top