#include <boost/chrono.hpp> يتسبب في عدم حل الرمز الخارجي، ويتم استخدام bcp

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

سؤال

أنا لست مبرمجا من ذوي الخبرة.لقد حاولت قطع جزء من التعزيز ولصقه مباشرة في مشروعي وهو حل C++ في Visual Studio 2010.لقد فعلت ذلك بهذه الطريقة:

  • فك ضغط مكتبة التعزيز
  • bootstrap.bat
  • bjam tools/bcd - هذا خلق دير .\bin.v2 ools\bcp\msvc-10.0 elease\link-static hreading-multi\
  • تغيير دير إلى المذكورة أعلاه
  • لقد قمت بكتابة برنامج نصي لفحص كافة الملفات في الحل، والنتيجة هي:
    نسبة static_assert غير قابلة للنسخ موضوع/أقفال موضوع chrono interprocess/mapped_region موضوع/recursive_mutex crc cstdint interprocess/file_mapping make_shared Shared_ptr lexical_cast
  • bcp --boost=C:\Users\xxxxxxxx\boost_1_49_0 noncopyable static_assert ratio thread/locks thread chrono interprocess/mapped_region thread/recursive_mutex crc cstdint interprocess/file_mapping make_shared shared_ptr lexical_cast lexical_cast ./myboost
  • ينسخ ./myboost في الحل، قم بإعداد الخصائص، كل شيء يعمل بشكل جيد حتى لا أحاول تضمين "boost/chrono.hpp" (على سبيل المثال.#include "boost/lexical_cast.hpp" على ما يرام).
  • يؤدي Boost/chrono.hpp إلى حدوث خطأ في الرابط:

    3>playerMain.obj :خطأ LNK2001:رمز خارجي لم يتم حله "تعزيز الفئة::system::error_category const & __cdecl Boost::system::system_category(void)" (?system_category@system@boost@@YAABVerror_category@12@XZ)

    3>playerMain.obj :خطأ LNK2001:رمز خارجي لم يتم حله "تعزيز الفئة::system::error_category const & __cdecl Boost::system::generic_category(void)" (?generic_category@system@boost@@YAABVerror_category@12@XZ)


هل يمكنني استخدام bcp بشكل صحيح؟
ماذا يجب أن أفعل لجعله يعمل؟

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

المحلول

تم توضيح عملية تثبيت Boost للاستخدام مع Visual Studio بشكل واضح إلى حد ما هنا.لا يجب أن تحتاج إلى كتابة أي نصوص برمجية للتثبيت.

من المهم معرفة أن معظم مكتبات Boost هي مكتبات رأسية فقط (مثل Boost.Lexical_Cast)، إلا أن بعضها يتطلب منك الارتباط بمكتبة ثابتة (مثل Boost.System).انظر الى هذا قسم من مستند البدء حول كيفية السماح لـ Visual Studio بمعرفة مكان وجود مكتبات Boost الثابتة.

هذا قسم قوائم المكتبات التي هي لا رأس فقط.بعض المكتبات (مثل Boost.Chrono وBoost.Asio) هي في حد ذاتها مخصصة للرأس فقط، ولكنها تعتمد على Boost.System والتي تحتاج إلى ربطها ببرنامجك.

أتمنى أن يساعدك هذا.

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