بما في ذلك نظام الملفات Boost::file ينتج أخطاء في الارتباط

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

سؤال

حسنًا، أولاً، سأقوم بالربط بين نظامي Boost_system وboost_filesystem.

المترجم الخاص بي هو أ بناء مخصص لـ MinGW مع دول مجلس التعاون الخليجي 4.3.2

لذلك عندما أقوم بتضمين:

#include "boost/filesystem.hpp"

تظهر لي أخطاء في الارتباط مثل:

..\..\libraries\boost\libs\libboost_system.a(error_code.o):error_code.cpp:
    (.text+0xe35)||undefined reference to `_Unwind_Resume'|

..\..\libraries\boost\libs\libboost_system.a(error_code.o):error_code.cpp:
    (.eh_frame+0x12)||undefined reference to `__gxx_personality_v0'|

والذي وجدته بعد قليل من البحث هو الأكثر شيوعًا عند محاولة ربط برنامج C++ مع gcc، مترجم GNU C.لكنني قمت بطباعة أمر البناء الدقيق لذلك الكود::كتل قيد التشغيل، ومن المؤكد أنه يرتبط بـ g++.

إذا قمت بالتعليق على هذا يشمل، كل شيء يعمل بشكل جيد.

أيه أفكار؟أيضًا، كجانب، هل يعرف أي شخص مكانًا جيدًا للحصول على ثنائيات Windows لتعزيزها؟نظام البناء يسبب لي مشاكل، لذلك أستخدم بعض الثنائيات المرفقة مع هذا حزمة MinGW المخصصة

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

المحلول

حسنًا، لقد وجدت المشكلة.انها معقدة بعض الشيء.

أصبحت دول مجلس التعاون الخليجي تدريجيًا أكثر توافقًا مع IS 14882 في الفرع 4.x.ومع استمرارهم في ذلك، يقومون بإزالة ميزات الشكوى غير القياسية المهملة.

بينما يبدو أن الإصدار 4.1.x قد تم إهمالها فقط ولم تتم إزالتها، يبدو أن الإصدار 4.3.x قد قام بإزالتها بالفعل.ما يعنيه هذا هو أن الإصدار 4.3.x والإصدارات الأحدث لديه بعض مشكلات التوافق مع الإصدارات السابقة مع الأشياء التي تم تجميعها في الفرع 3.x (الذي استخدم الميزات المهملة والتي تمت إزالتها الآن)

كنت أستخدم مجموعة مزيج ومطابقة من الثنائيات التي تم تجميعها مع دول مجلس التعاون الخليجي 3.x و4.1.x و4.3.x، لذا بغض النظر عن البرنامج الذي استخدمته، فقد حصلت على خطأ مماثل، لأنه على الأقل ثنائي واحد كنت أقوم بالربط به كان غير متوافق مع المترجم الذي كنت أحاوله في الوقت الحالي.

أنا الآن أستخدم الإصدار 4.1.2 من مجلس التعاون الخليجي وقد تم تجميع معظم الثنائيات الخاصة بي باستخدامه.مازلت أستخدم عددًا قليلًا من الثنائيات من الإصدار 3.x، ولهذا السبب لم أقم بالترقية إلى الإصدار 4.3.x حتى الآن.

آمل أن تكون القراءة أقل إرباكًا من الكتابة ...

هذا يبدو أنها مشاركة جيدة تتناول بعض المشكلات كما كانت مع الإصدار 4.1.x

نصائح أخرى

ثنائيات ويندوز:www.boost.org - راجع صفحة "البدء" - ولكن إذا كنت تستخدم g++ على MingGW، فأنت لا تريد ذلك.هناك طريقة بسيطة لفهم ذلك، وهي أن MingGW يشبه نظام التشغيل داخل نظام التشغيل، لذا فأنت في الواقع لا تستخدم Windows.ربما تكون تلك التي لديك على حق.

لست متأكدًا مما يحدث في التعليمات البرمجية الخاصة بك، يبدو أن ملفات lib لا يتم ربطها بشكل صحيح بطريقة أو بأخرى.يقوم Boost بتسمية ملفات lib الخاصة به بنفسه حتى لا تقوم بتسميتها بشكل صريح، ولكن يجب أن يكون لديك ملفات lib للتعزيز على المسار الصحيح (وتأكد من تثبيتها/إنشاءها أيضًا، وهو ما قد لا يكون كذلك).لست متأكدًا من كيفية وضعهم على المسار الصحيح باستخدام g++ لأنني لم أستخدم MingGW، لقد استخدمت التعزيز فقط مع Visual Studio.

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