لم تحل أخطاء رمز الخارجية التحول من مكتبة البناء إلى exe أو دلل

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

  •  03-07-2019
  •  | 
  •  

سؤال

وأنا إنشاء تطبيق كمكتبة، ولكن لنضمن يمكنني الحصول على الإخراج الذي أود، أنا تحولت على مدى لإنتاج إكس. في أقرب وقت كما فعلت، وحصلت على عدة أخطاء حول رموز الخارجية التي لم تحل بعد.

في البداية اعتقدت أنني لم يكن لديك مسار لتعيين مكتبة 3rd الطرف أنني الرجوع، لذلك أضفت المجلد إلى بلدي متغير المسار وحتى إضافته إلى تشمل بلدي والمراجع والملفات المصدر، فقط للتأكد من كان لي كل المسارات.

وأنا لا يزال الحصول على خطأ:

<اقتباس فقرة>   

والخطأ LNK2019: لم يتم حلها الخارجية   الرمز "__declspec (dllimport) الجمهور:   الفراغ ثابت       __cdecl xercesc_2_8 :: :: XMLPlatformUtils تهيئة (شار   CONST * CONST، شار CONST *   CONST، والطبقة xercesc_2_8 :: PanicHandler   * CONST، والطبقة xercesc_2_8 :: MemoryManager *   CONST، منطقي) "   (__imp_؟ تهيئة @ XMLPlatformUtils @ xercesc_2_8SAXQBD0QAVPanicHandler @ 2 @ QAVMemoryManager @ 2 @ _N @ Z)   المشار إليها في وظيفة "__cdecl باطل   XSD :: :: CXX أكس :: تهيئة (الفراغ) "   (؟ تهيئة @ أكس @ CXX @ XSDYAXXZ)

والسبب في ذلك أنا أسأل هنا لأن في Visual Studio، عندما بنيت كمكتبة، لم أحصل على هذه الأخطاء، ولكن كما دلل وإكس، أفعل.

وأي شخص لديه أي أفكار؟

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

المحلول

وبناء مكتبة، لا يحتاج رابط لحل رموز المستوردة. هذا يحدث فقط عندما يبدأ ربط الملفات الكائن والمكتبات معا.

وهذا هو السبب في أنك بدأت فقط رؤية الخطأ عند بناء قابل للتنفيذ.

في الواقع، في VC2008 (و 2005، إذا كنت أتذكر جيدا)، استخدم خصائص المشروع -> رابط -> الإدخال -> تبعيات إضافية. المكتبات التي تحتاج إليها هي أن تكون مفصولة بمسافات (ونيف، مهلا؟)

وحظا سعيدا!

نصائح أخرى

وتحتاج أيضا إلى تحديد أنك ترغب في ربط ضد تلك المكتبة على وجه الخصوص. وربط المسارات فقط اقول رابط حيث البيانات تحتاج إلى العثور على هو، وليس ما الذي تبحث عنه. سوف تحتاج أيضا إلى تحديد التي ترتبط ضد المكتبة في السؤال (xerces؟).

للأسف، أنا لا أعرف كيفية تحديد هذا في MSVC، ولكن من المحتمل أن يكون في مكان ما تحت "خيارات رابط.

وكما قالcoppro، تحتاج إلى تحديد أنك تريد الارتباط مع هذه المكتبة. عند إنشاء EXE أو DLL، يتم تشغيل رابط، ويحتاج للعثور على جميع الوظائف التي تستخدم، ولكن لبناء مكتبة، يتم تشغيل المكتبة، وأنه ليس من الضروري أن حل كافة المراجع وظيفة (ولكن عندما يمكنك استخدام هذا ليب في EXE، سيكون لديك ل، مرة أخرى).

وهكذا ذهبت إلى خيارات المشروع، خيارات رابط، الإدخال، وقائمة المكتبة التي تحدد وظيفة مفقودة (xerces.lib؟) تحت مسارات مكتبة إضافية. قد تحتاج إلى إضافة موقعها تحت مسارات مكتبة إضافية.

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