خطأ مرجعي خارجي g++
-
05-07-2019 - |
سؤال
لدي مشكلة مستنسخة على g++.VC++ لا يواجه أي مشاكل.لذلك لدي ملفين cpp:
1.CPP:
#include <string>
#include <iostream>
extern const std::string QWERTY;
int main()
{
std::cout << QWERTY.c_str() << std::endl;
}
2.CPP:
#include <string>
const std::string QWERTY("qwerty");
لا يوجد سحر، أريد فقط وضع ثوابت السلسلة في ملف منفصل.في وقت الارتباط ld ينتج خطأ:"الإشارة غير المحددة إلى" _qwerty "" أول التفكير في التفاف كلتا الإعلانات في "extern" c "" - لم يساعد.الخطأ وغير c++ _QWERTY لا يزال موجودًا.
شكرا مقدما على أي اقتراحات
المحلول
يبدو أنك ربما تواجه هذا الجزء من المعيار:
في C ، يحتوي كائن مؤهل مؤهل في نطاق الملف دون وجود محدد فئة تخزين صريح على ارتباط خارجي. في C++، لديها ارتباط داخلي.
قم بإجراء هذا التغيير على 2.cpp:
#include <string>
extern const std::string QWERTY("qwerty");
هناك المزيد من التفاصيل حول معنى "الربط" في هذا السؤال - ما هو الارتباط الخارجي والربط الداخلي في C++.
نصائح أخرى
وأنا يجب أن ننظر إليه ولكن أعتقد المتغيرات العالمية CONST لها الربط الداخلي في C ++، لا تستخدم const
وأنها سوف تجمع ما يرام.
1.cpp
...
extern std::string QWERTY;
...
2.cpp
#include <string>
std::string QWERTY("qwerty");
وأو هل يمكن أن يعلن / تعريف بأنها سلسلة CONST في رأس مشترك بطبيعة الحال.
سوف وإضافة extern
زائدة إلى 2.cpp الحصول عليه لتجميع جدا، لكنني لست متأكدا من أن هذا المعيار أو بعض ز ++ 'خارج'