معلومات الدعم الداخلي من Microsoft
الخطأ رقم: 101959 (صواب)
الملخص
عند بناء DLL باستخدام إصدار 64 بت من Microsoft Visual c + + برنامج التحويل البرمجي والرابط، قد تتلقى رابط رقم الخطأ LNK4197 إذا أعلنت دالة للتصدير أكثر من مرة واحدة.
الأعراض
قد يكون الإخراج الرابط مشابهة لما يلي:
C:\>link /NOLOGO /def:Sample.def /pdb:Sample.pdb /out:Sample.dll Sample.objSample.obj : warning LNK4197: export 'DllSample' specified multiple times; using first specification Creating library Sample.lib and object Sample.exp
السبب
يتم إنشاء رابط رقم الخطأ LNK4197 عندما أعلنت دالة للتصدير أكثر من مرة واحدة. يتم تعريف دالة للتصدير بإحدى الطرق التالية:
-
يتم تعريف الدالة باستخدام الكلمة الأساسية __declspec (dllexport) في الملف المصدر C:
__declspec(dllexport) int DllSample() { return 42;}
-
تم تعريف الدالة باستخدام تعريف الوحدة نمطية (. الملف DEF):
EXPORTS DllSample
قد يحدث هذا الخطأ الرابط كثرة عند كل من الكلمة الأساسية __declspec (dllexport) و. تستخدم لتعريف نفس اسم الدالة في الملف DEF. مشروع DLL.
الحل
لحل هذه المشكلة، تعريف الدالات التي تم تصديرها مرة واحدة فقط، أما باستخدام الكلمة الأساسية __declspec (dllexport) أو باستخدام. الملف DEF. لا تستخدم كلا الطريقتين.
الحالة
يعتبر هذا السلوك حسب التصميم.
مزيد من المعلومات
تعريف دالة للتصدير أكثر من مرة واحدة، قد لا تنتج الرابط الخطأ الموضحة في قسم "الأعراض" من هذه المقالة في إصدارات 32 بت من برنامج التحويل البرمجي c + + Windows Microsoft رابط. ومع ذلك، توصي Microsoft بتعريف الدالة يصدر مرة واحدة فقط في إصدارات كل من 32 بت و 64 بت من برنامج التحويل البرمجي c + + Windows رابط.