Pergunta

Parece que algum trabalho foi feito para tornar pthread-win32 trabalho com x64, mas não há instruções de compilação. Eu tentei simly prédio com as ferramentas do Visual Studio x64 Cruz Prompt de comando, mas quando eu tento link para o lib de um aplicativo x64, não pode ver qualquer das exportações de função. Parece que ele ainda está compilando o lib como x86 ou algo assim.

Eu mesmo tentei adicionar / MACHINE ao makefile nos lugares apropriados, mas isso não ajuda. Alguém chegado a este trabalho?

Foi útil?

Solução 2

Até que ele seja lançado oficialmente, parece que você tem que verificar o chefe CVS para obter a versão 2.9 da biblioteca. Versão 2.9 tem todos os patches x64, mas você ainda vai ter problemas se você tentar compilar a biblioteca estática na linha de comando.

A única solução que conheço é usar as DLLs em vez de ligar estaticamente a LIB.

Outras dicas

Para mim, eu apenas usar um compilador de 64 bits do Windows (compilador cruzado mingw-w64 neste caso particular), em seguida, fazer (with2.9.1) como:

$ make clean GC-static 

Então, como eu instalá-lo para uso (alguns isso pode não ser necessário, é claro),

cp libpthreadGC2.a $mingw_w64_x86_64_prefix/lib/libpthread.a
cp pthread.h sched.h semaphore.h $mingw_w64_x86_64_prefix/include

, em seguida, usá-lo, você tem que definir isso (exemplo linha ffmpeg configure a usá-lo):

--extra-cflags=-DPTW32_STATIC_LIB 

De qualquer forma essa é uma maneira.

Outra maneira é fazer o mesmo, em seguida, modificar os arquivos .h * e remover todas as referências a dllexport dos cabeçalhos (ou manualmente definir DPTW32_STATIC_LIB nos cabeçalhos).

ex:

 sed 's/ __declspec (dllexport)//g;s/ __declspec (dllimport)//g'

(ref: scripts de construção zeranoe)

Aqui está como eu fiz isso (VS2015). Deve trabalhar para idosos Visual Studios também.

1) Faça o download do .zip libertação da SourceForge
2) Descompacte a uma pasta- limpo deve ver
"pthreads.2" 3) Abra seu prompt de comando Visual Studio, navegue para "pthreads.2." 4) Executar "nmake", sem argumentos. Ela produz uma mensagem de ajuda lista todos os comandos legais que você pode dar 'nmake' para construí-lo. Para mais informações, consulte "pthreads.2 \ FAQ" arquivo que explica seus 3 sabores diferentes de 'limpeza' manipulação.

Gostaria de sugerir a construção de "VC" e "VC-debug" (e talvez as estáticas daqueles) apenas. Os pthreads 'real' é uma biblioteca C do sistema em plataformas POSIX como o Linux, por isso, apenas os combos estão indo dar-lhe o mesmo comportamento de erro C exata no Windows que você deseja obter em Linux, FreeBSD, etc.

Esta mensagem pode ajudar.

para expandir kgriffs responder se tem a fazer mais duas coisas para realmente construir um de 64 bits DLL e não de 32 bits DLL.

Primeiro download da última pthreads via CVS (como sugerido aqui )

1) ferramentas de compilação uso de 64 bits - alcançado por carregar configurações corretas ambiente VC na linha de comando (mais sobre ele aqui ):

C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\vcvarsall.bat amd64

(mudar a 11,0 para qualquer versão que você está usando)

2) Como está escrito nas pthreads Makefile:

TARGET_CPU é um conjunto variável de ambiente pelo Visual Studio Command Prompt fornecidos pelo SDK (VS 2010 Express além SDK 7.1) PLATAFORMA é uma variável de ambiente que pode ser definido no VS 2013 expresso x64 cruz ambiente de desenvolvimento

O que significa, que se não foi feito pelos vcvars (no meu caso não era) você precisa definir TARGET_CPU ou plataforma (apenas no caso eu defini-los ambos):

set TARGET_CPU=x64 set PLATFORM=x64

3) e agora o passo final:

nmake clean VC nmake clean VC-debug

Isto fará uma arquivos de 64 bits DLL (e biblioteca de importação adequada e PDB). Posso verificar se ele funciona com o Visual Studio 2012.

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