Pregunta

Parece que se ha trabajado para que pthread-win32 funcione con x64, pero no hay instrucciones de compilación He intentado construir simplemente con el Visual Studio x64 Cross Tools Command Prompt, pero cuando intento enlazar a la biblioteca desde una aplicación x64, no puedo ver ninguna de las funciones exportadas. Parece que todavía está compilando la biblioteca como x86 o algo así.

Incluso he intentado agregar / MACHINE al archivo MAKE en los lugares apropiados, pero no ayuda. ¿Alguien ha conseguido que esto funcione?

¿Fue útil?

Solución 2

Hasta que se lance oficialmente, parece que tienes que revisar el encabezado de CVS para obtener la versión 2.9 de la biblioteca. La versión 2.9 tiene todos los parches x64, pero seguirá teniendo problemas si intenta compilar la biblioteca estática desde la línea de comandos.

La única solución que conozco es usar los DLL en lugar de vincular estáticamente la LIB.

Otros consejos

Para mí, solo uso un compilador de Windows de 64 bits (compilador cruzado mingw-w64 en este caso particular) y luego hago (con 2.0.1) como:

$ make clean GC-static 

Luego, cómo lo instalo para su uso (puede que parte de esto no sea necesario, por supuesto),

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

luego, para usarlo, debe definirlo (por ejemplo, ffmpeg configure line para usarlo):

--extra-cflags=-DPTW32_STATIC_LIB 

De todos modos, esa es una forma.

Otra forma es hacer lo mismo y luego modificar los archivos * .h y eliminar todas las referencias a dllexport de los encabezados (o definir manualmente DPTW32_STATIC_LIB en los encabezados).

ej:

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

(ref: zeranoe build scripts)

Así es como lo hice (VS2015). Debería funcionar para mayores estudios visuales también.

1) Descargue la versión .zip de SourceForge
2) Desempaquetar en una carpeta limpia, debería ver " pthreads.2 "
3) Abra su indicador de comando de Visual Studio, navegue a " pthreads.2. & Quot; 4) Ejecutar " nmake " ;, sin argumentos. Produce un mensaje de ayuda con una lista de todos los comandos legales que puede dar 'nmake' para construirlo. Para obtener más información, consulte " pthreads.2 \ FAQ " archivo que explica sus 3 tipos diferentes de manejo de "limpieza".

Sugeriría construir " VC " y " VC-debug " (y tal vez los estáticos de esos) solamente. El pthreads "real" es una biblioteca del sistema C en plataformas POSIX como Linux, por lo que solo esas combinaciones te darán el mismo comportamiento de error C en Windows que obtendrías en Linux, FreeBSD, etc.

Este mensaje puede ayudar.

para expandir la respuesta de kgriffs, uno tiene que hacer dos cosas más para construir una DLL de 64 bits y no una DLL de 32 bits.

Primero descargue los últimos pthreads a través de CVS (como se sugiere here )

1) use herramientas de compilación de 64 bits: se logra al cargar la configuración correcta del entorno de VC en la línea de comandos (más sobre esto aquí ):

C: \ Archivos de programa (x86) \ Microsoft Visual Studio 11.0 \ VC \ vcvarsall.bat amd64

(cambia el 11.0 a la versión que estés usando)

2) Tal como está escrito en el archivo Makefile de pthreads:

  

TARGET_CPU es una variable de entorno establecida por el símbolo del sistema de Visual Studio   según lo dispuesto por el SDK (VS 2010 Express más SDK 7.1)   PLATFORM es una variable de entorno que se puede configurar en el cruce de VS 2013 Express x64   entorno de desarrollo

lo que significa que, si no lo hicieron las vcvars (en mi caso, no fue así), debes configurar TARGET_CPU o PLATFORM (en caso de que yo las configure):

establece TARGET_CPU = x64  establecer PLATFORM = x64

3) y ahora el paso final:

nmake clean VC  nmake clean VC-debug

esto creará archivos DLL de 64 bits (y una biblioteca de importación adecuada y PDB). Puedo verificar que funciona con Visual Studio 2012.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top