تجميع واستخدام مكتبة NTL c++ لنظام التشغيل Windows

StackOverflow https://stackoverflow.com/questions/2621136

  •  26-09-2019
  •  | 
  •  

سؤال

لقد قمت بتجميع مكتبة NTL الحسابية للأعداد الصحيحة الدقيقة لـ c++، باستخدام Microsoft Visual Studio 2008.فعلت كما هو موضح، على هذا الموقع, باستخدام واجهة Visual Studio، بدلاً من موجه الأوامر.في الواقع أفضل القيام بذلك من موجه الأوامر، لكنني لم أكن متأكدًا من كيفية القيام بذلك.

على أية حال، لقد قمت بتجميع المكتبة، وأريد الآن تجميع برنامج باستخدام المكتبة، من موجه الأوامر.تم اختبار البرنامج الذي أحاول تجميعه على نظام Linux، حيث قمت بتجميعه بما يلي

c++ -I/appl/htopopt/Linux_x86_64/NTL-5.4.2/include mpqs.cpp main.cpp -o main -L/appl/htopopt/Linux_x86_64/NTL-5.4.2/lib -lntl -L/appl/htopopt/Linux_x86_64/gmp-4.2.1/lib -lgmp -lm

لا تهتم بأشياء gmp، فأنا لم أقم بتثبيتها على Windows.إنه شيء اختياري بحت من شأنه أن يجعل NTL يعمل بشكل أسرع.على أية حال، هذا يعمل بشكل جيد على لينكس.الآن على نظام التشغيل Windows أكتب ما يلي

cl /EHsc /I D:\Downloads\WinNTL-5_5_2\include mpqs.cpp main.cpp /link /LIBPATH:"D:\Documents\Visual Studio 2008\Projects\ntl\Debug"

لكن هذا يؤدي إلى الأخطاء التالية:

mpqs.cpp
mpqs.cpp(38) : error C2039: 'find_smooth_vals' : is not a member of 'QS'
        d:\desktop\qs\mpqs.h(12) : see declaration of 'QS'
mpqs.cpp(41) : error C2065: 'M' : undeclared identifier
mpqs.cpp(41) : error C2065: 'n' : undeclared identifier
mpqs.cpp(42) : error C2065: 'sieve_table' : undeclared identifier
mpqs.cpp(42) : error C2228: left of '.size' must have class/struct/union
        type is ''unknown-type''
mpqs.cpp(43) : error C2065: 'sieve_table' : undeclared identifier
mpqs.cpp(44) : error C2065: 'qx_table' : undeclared identifier
mpqs.cpp(44) : error C3861: 'test_smoothness': identifier not found
mpqs.cpp(45) : error C2065: 'smooth_indices' : undeclared identifier
mpqs.cpp(45) : error C2228: left of '.push_back' must have class/struct/union
        type is ''unknown-type''
main.cpp
Generating Code...

يبدو الأمر كما لو أن ملف mpqs.h الخاص بي لم يتم تضمينه في عملية التجميع؟كما أنني لا أفهم سبب الشكوى من .push_back() لنوع المتجه؟

المساعدة موضع تقدير كبير!

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

المحلول

من المؤكد أنه سيتم تضمين mpqs.h حيث يطلب منك الإخراج الرجوع إليه.

نظرًا لأن MPQS.h لا يبدو أنه مدرج في مكتبة NTL ...هل كتبته؟إذا كان الأمر كذلك هل يمكنك نشر الكود؟

أيضًا، ألا يجب عليك تضمين ملف المكتبة في مكان ما على جهازك؟

يحرر:لا توجد وظيفة find_smooth_values، فلماذا تتوقع أن يعثر عليها MSVC؟لست متأكدًا من سبب تجميع ذلك ضمن دول مجلس التعاون الخليجي ولكن من الواضح أنه مفقود.أعتقد أن الأخطاء الأخرى سببها هذا الخطأ.الأخطاء تخبرك بالأشياء.يجب أن تستمع إليهم.

فشل Push_back لأنه لا يعرف ما هو النوع الذي تحاول دفعه إلى الخلف.ربما يرجع هذا مرة أخرى إلى حقيقة عدم وجود find_smooth_values.حاول إضافة النموذج الأولي للوظيفة إلى فئة QS.هذا قد يحل جميع مشاكلك.

أما بالنسبة للمكتبة فلن تتمكن من استخدام المكتبة إلا بعد نجاح التجميع.لذلك لا تقلق بشأن ذلك الآن.ادخل إلى هناك وأصلح الأخطاء التي يبلغ عنها MSVC!

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