Question

Il semble qu'un travail ait été fait pour que pthread-win32 fonctionne avec x64, mais il n'y a pas d'instructions de construction. J'ai essayé de créer simly avec l'invite de commandes Visual Studio x64 de Cross Tools, mais lorsque j'essaie de créer un lien vers la lib depuis une application x64, elle ne peut voir aucune des exportations de fonction. Il semble que la compilation soit toujours en x86 ou quelque chose du genre.

J'ai même essayé d'ajouter / MACHINE au fichier makefile aux endroits appropriés, mais cela n'aide pas. Est-ce que quelqu'un a réussi à faire fonctionner cela?

Était-ce utile?

La solution 2

Jusqu'à sa publication officielle, il semble que vous deviez vérifier la tête de CVS pour obtenir la version 2.9 de la bibliothèque. La version 2.9 contient tous les correctifs x64, mais vous aurez toujours des problèmes si vous essayez de compiler la bibliothèque statique à partir de la ligne de commande.

La seule solution que je connaisse consiste à utiliser les DLL au lieu de lier statiquement la LIB.

Autres conseils

Pour moi, je viens d'utiliser un compilateur Windows 64 bits (compilateur croisé mingw-w64 dans ce cas particulier) puis de créer (avec 1.9.1) comme:

$ make clean GC-static 

Ensuite, comment l'installer pour l'utiliser (une partie de cela peut ne pas être nécessaire, bien sûr),

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

pour l'utiliser, vous devez définir ceci (exemple, ffmpeg configure la ligne pour l'utiliser):

--extra-cflags=-DPTW32_STATIC_LIB 

Quoi qu’il en soit, c’est un moyen.

Une autre méthode consiste à modifier les fichiers * .h et à supprimer toutes les références à dllexport des en-têtes (ou à définir manuellement DPTW32_STATIC_LIB dans les en-têtes).

ex:

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

(ref: scripts de construction zeranoe)

Voici comment je l’ai fait (VS2015). Devrait travailler pour les anciens studios Visual aussi.

1) Téléchargez le communiqué .zip à partir de SourceForge
2) Décompressez dans un dossier propre - devrait voir "pthreads.2"

3) Ouvrez votre invite de commande Visual Studio, accédez à " pthreads.2. & Quot; 4) Exécutez "nmake", sans argument. Il produit un message d'aide énumérant toutes les commandes légales que vous pouvez donner à 'nmake' pour le construire. Pour plus d'informations, voir "pthreads.2 \ FAQ". fichier qui explique leurs 3 types de traitement de nettoyage.

Je suggérerais de créer "VC". et " VC-debug " (et peut-être les statiques de ceux-ci) seulement. Les «vrais» pthreads sont une bibliothèque système C sur des plateformes POSIX telles que Linux. Ainsi, seuls ces combos vous donneront exactement le même comportement d'erreur C sous Windows que vous obtiendriez sous Linux, FreeBSD, etc.

Ce message pourrait vous aider.

pour développer kgriffs answer, il faut faire deux autres choses pour créer réellement une DLL 64 bits et non une DLL 32 bits.

Commencez par télécharger les dernières pensées via CVS (comme suggéré ici )

1) Utilise des outils de génération 64 bits - en chargeant les paramètres d’environnement VC corrects en ligne de commande (pour en savoir plus ici ):

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

(remplacez la version 11.0 par la version que vous utilisez)

2) Comme il est écrit dans le fichier Makefile de pthreads:

  

TARGET_CPU est une variable d'environnement définie par l'invite de commande Visual Studio.   tel que fourni par le SDK (VS 2010 Express plus SDK 7.1)   PLATFORM est une variable d’environnement pouvant être définie dans le fichier VS 2013 Express x64.   environnement de développement

ce qui signifie que si cela n’a pas été fait par les vcvars (dans mon cas ce n’était pas le cas), vous devez définir TARGET_CPU ou PLATFORM (juste au cas où je les définirais tous les deux):

définir TARGET_CPU = x64  set PLATFORM = x64

3) et maintenant la dernière étape:

nmake clean VC  nmake clean VC-debug

Cela créera des fichiers DLL 64 bits (et une bibliothèque d’importation et un PDB appropriés). Je peux vérifier que cela fonctionne avec Visual Studio 2012.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top