الكشف عن وقت تشغيل C متعدد المرتبط على Windows
سؤال
لدي بعض المشاكل مع أحد المشاريع التي أعمل عليها على Windows (64 بت). يتعطل البرنامج في بعض الأحيان، في بعض الأحيان لا، وأشك في ربط المشكلة بذراع تشغيل C متعدد المرتبط. كيف يمكنني اكتشاف هذا على ويندوز؟ حاولت مع depends.exe، لكنه لم يبلغ عن CRT
المحلول
من غير المرجح أن تتمكن من الارتباط بشكل ثابت بشكل ثابت ضد مكتبات وقت التشغيل المتعددة - كنت ترغب في العديد من تعارضات تعريف الرموز التي من شأنها أن تنتج على الأقل تحذيرات ضخمة، وسوف يتجاهلهم مهندس متهور فقط.
مع depends
, ، أود أن أتأكد من استخدام خيار التنميط الديناميكي، للتحقق من جميع التبعيات ل CRTLs الديناميكية التي يحملونها. إذا لم يحضر أي شيء، أظن أن مشكلتك في مكان آخر.
أود أن أشك في مشكلتك في أماكن أخرى في أي حال، حيث أن DLLs مع واجهات برمجة التطبيقات على مستوى C يجب أن لا، كقاعدة عامة، تعتمد على الدولة المشتركة في CRTL - الأكثر شيوعا مخصص الذاكرة - ويجب أن تعتمد بروتوكول موحد إدارة الذاكرة عبر API، مثل تخصص المتصل، يستخدم Callee، أو تمرير عمليات استدعاء تخصيص الذاكرة، إلخ. وبعبارة أخرى، فإن العديد من CRTLs في نفس العملية ليست عادة مشكلة بسبب الاستخدام الصحيح لبروتوكول إدارة الذاكرة.
بالنسبة للإخفاشات العابرة، أود أن أظن مرتدة أو كومة الفساد.