سؤال

سأحاول أن أشرح لك قريبا ما أريد القيام به:

مشروع باستخدام مكتبة ثابتة والتي يكون آخر واحد كما depandency.هو إنتاج مشروع يسمى MyProject ربط على MyLib1 ربط على MyLib2.هنا هو ترجمة النظام:

  • MyLib2
  • MyLib1 (ربط MyLib2)
  • MyProject (ربط MyLib1)

أنا باستخدام Visual Studio 2008 و لدي بعض المشاكل في تحديد تشمل.عند ربط يمكنني استخدام خاصية "إضافية تشمل الدليل" (بشأن مشروع الملكية C/C++ عقدة).ويبدو أن هذا العامل بين MyProject و MyLib1 ولكن ليس MyLib1 و MyLib2.على سبيل المثال:لقد ملف في MyLib2 يسمى foo.cpp;باستخدام #include "foo.cpp" يجعل visual studio تقول أن foo.cpp هو unknow (مفقود ملف أو مجلد).

للتأكد من أنه ليس الطريق الخطأ أعطى ، لقد فعلت العديد من المحاولات مثل التالية:نسخ ولصق المسار المبين في سطر الأوامر (التي تستخدم لتجميع المكتبة) إلى الفوز explorer:لا نرى جيدا التعليمات البرمجية المصدر من بلدي الثاني المكتبة.لقد طبعة جديدة المشروع مرات عديدة و في كل مرة كنت تستخدم بمختلف الأسماء (يجبرني على دفع الانتباه إلى هذا) و كل شيء يبدو جيدا محددة (ولكن ليس "بما في ذلك").

الطريقة الوحيدة في الواقع تجد لجعله يعمل:باستخدام #include "c:\\foo.cpp" كما تشمل...جميل جدا لقابلية !

هنا هو الرمز البريدي من حل اختبار نفسك و قل لي ما هو الخطأ: MyProject.rar

شكرا على أخذ بعض الوقت لمساعدتي !Lucyberad

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

المحلول

أولاً، لا تقم أبداً بتضمين ملفات *.cpp.

ثانيًا، استخدم الإعلان الأمامي لوظائفك الخارجية:

void appellib2(void);

void appellib1(void)
{
    appellib2();
}

ثالثًا، انقر بزر الماوس الأيمن فوق كل مشروع في Solution Explorer، وحدد "تبعيات المشروع..." وقم بإعداد التبعيات المناسبة:مشروعي -> MyLib1 -> MyLib2.

أخيرًا، في خصائص MyProject، قم بإعداد تبعيات إضافية MyLib1.lib.

يمكنني الآن إنشاء مشروعك وتشغيله دون أخطاء.

تحديث

لا تقم أبدًا بإعادة تسمية *.cpp إلى *.h فقط لحل مشاكل الارتباط.إذا كان لديك تعريف في ملف *.h الخاص بك، فلن تتمكن من تضمينه مرتين أو أكثر.

هنا مشروعك YourProject.rar.

نصائح أخرى

لقد تغيرت .cpp إلى .ح.أنا لم تشمل الملف CPP ولكن كان لغرض الإختبار.

لقد تم إضافة النموذج لكل وظيفة ولكنه لا يعمل بشكل أفضل (لا تشمل الملف mylib2.cpp النموذج هو أفضل ولكن ليست مفيدة في هذا الاختبار).

لقد قمت بإعداد مشروع التبعيات.فإنه لا تزال تفشل.

لقد قمت بإعداد إضافية تبعيات MyLib1.lib إلى MyProject (أعتقد أن هذا كان الخطأ التالية سوف تكون قادرة على العثور على, إنتاج ربط خطأ).

مع أطروحات التعديلات ، مازال لدي تشمل خطأ mylib2.h:لا يوجد مثل هذا الملف أو الدليل.

هنا أرشيف جديد: MyProject.rar

إذا كنت تصل إلى الحصول على عمل ، يمكنك أن تجعل لي أرشيف العامل الحل ؟

شكرا Lucyberad.

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