سؤال

ويبدو ان بعض العمل الذي تم القيام به لجعل pthread-Win32 و العمل مع x64 و لكن لا توجد تعليمات البناء. لقد حاولت بناء simly مع البصرية ستوديو أدوات إلى x64 الصليب موجه الأوامر، ولكن عندما أحاول أن تصل إلى ليب من تطبيق إلى x64، فإنه لا يمكن رؤية أي من الصادرات وظيفة. يبدو أنه لا يزال تجميع ليب كما إلى x86 أو شيء من هذا.

ولقد حاولت حتى إضافة / MACHINE لفي makefile في الأماكن المناسبة، ولكنه لا يساعد. وقد أي شخص حصلت على هذا العمل؟

هل كانت مفيدة؟

المحلول 2

وحتى انها رسميا، فإنه يبدو أن لديك للتحقق من رئيس CVS للحصول على الإصدار 2.9 من المكتبة. الإصدار 2.9 لديه كل بقع إلى x64، ولكن سوف لا تزال تواجه مشكلات إذا حاولت تجميع مكتبة ثابتة من سطر الأوامر.

والحل الوحيد الذي أعرفه من هو استخدام دلس بدلا من ربط بشكل ثابت LIB.

نصائح أخرى

وبالنسبة لي، وأنا مجرد استخدام ويندوز مترجم 64 بت (مينغو-W64 عبر المترجم في هذه الحالة بالذات) ثم جعل (with2.9.1) مثل:

$ make clean GC-static 

وثم كيف يمكنني تثبيته للاستخدام (قد لا تكون هناك حاجة إلى بعض من هذا، بطبيعة الحال)،

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

وبعد ذلك لاستخدامها، لديك لتحديد هذه (على سبيل المثال خط فمبيج تكوين لاستخدامه):

--extra-cflags=-DPTW32_STATIC_LIB 

وعلى أية حال هذا هو اتجاه واحد.

وهناك طريقة أخرى هي أن تفعل الشيء نفسه ثم تعديل الملفات .H * وإزالة كل ما يشير إلى dllexport من رؤوس (أو يدويا تحديد DPTW32_STATIC_LIB في رؤوس).

مثال:

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

و(المرجع: zeranoe بناء البرامج النصية)

وهنا هو كيف فعلت ذلك (VS2015). يجب أن تعمل لاستوديوهات البصرية القديمة جدا.

1) تنزيل الرمز البريدي الإفراج عن سورس
2) فك إلى المجلدات نظيفة يجب أن نرى "pthreads.2"
3) فتح موجه الأوامر الخاص بك البصرية ستوديو، انتقل إلى "pthreads.2". 4) تشغيل "NMAKE"، بدون وسائط. وتنتج رسالة مساعدة سرد كافة الأوامر القانونية التي يمكن أن تعطي "NMAKE" لبنائه. لمزيد من المعلومات، راجع ملف "pthreads.2 \ التعليمات" وهو ما يفسر 3 النكهات المختلفة من التعامل مع "تنظيف".

وأود أن أقترح بناء "VC" و "VC-التصحيح" (وربما هم ثابتة من هؤلاء) فقط. وبثريدس "الحقيقية" هي مكتبة النظام C على منصات POSIX مثل لينكس، وذلك فقط تلك المجموعات تسير لتعطيك نفس السلوك الخطأ C المحدد على ويندوز التي كنت أحصل على لينكس، فري، الخ.

هذه الرسالة قد تساعد.

ولتوسيع kgriffs الإجابة على المرء أن قيام اثنين من أكثر الأشياء لبناء الواقع DLL 64bit و لا DLL 32BIT.

وتحميل أحدث الأولى بثريدس عبر CVS (كما اقترح <لأ href = "https://www.man42.net/blog/2011/09/pthread-w32-for-windows-64-bit/" يختلط = "نوفولو noreferrer "> هنا )

1) استخدام أدوات بناء 64BIT - عن طريق تحميل إعدادات البيئة VC الصحيحة في سطر الأوامر (المزيد حول هذا الموضوع <لأ href = حققت "https://msdn.microsoft.com/en-us/library/x4d2c09s.aspx" يختلط = "نوفولو noreferrer"> هنا ):

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

و(تغيير 11.0 إلى ما الإصدار الذي تستخدمه)

2) كما هو مكتوب في ماكيفيلي بثريدس:

<اقتباس فقرة>   

وTARGET_CPU هو متغير البيئة التي وضعتها موجه ستوديو القيادة البصرية   على النحو المنصوص عليه في SDK (VS 2010 اكسبرس بالإضافة إلى SDK 7.1)   منصة هو متغير البيئة التي قد يتم تعيين في VS 2013 اكسبرس عبر إلى x64   بيئة التطوير

وهذا يعني، أنه إذا لم يحدث ذلك من قبل vcvars (في حالتي لم يكن) تحتاج إلى تعيين TARGET_CPU أو منصة (فقط في حال أنا وضعت لهم على حد سواء):

وset TARGET_CPU=x64 set PLATFORM=x64

و3) والآن الخطوة الأخيرة:

وnmake clean VC nmake clean VC-debug

وهذا سيجعل ملفات 64BIT DLL (ومكتبة الاستيراد المناسبة وPDB). أستطيع أن تحقق من أنه يعمل مع Visual Studio 2012.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top