سؤال

أنا بناء تطبيق C ++ وتحتاج إلى استخدام PDCUSSES على Windows. أنا أروي مع VC ++ من MS VS 2005 وأنا أحصل على خطأ في الارتباط.

 error LNK2019: unresolved external
 symbol __imp__GetKeyState@4 referenced
 in function __get_key_count

هناك 11 أخطاء كلها مع نفس رمز الخطأ والرموز المختلفة. الرموز المفقودة هي __imp__mapvirtuleKeya @ 8، __imp__findwindowa @ 8، __imp__wsprintfa، __imp__sendmessagea @ 16، __imp__getwindowthreadprocessid @ 8، __imp__messagebeep @ 4. يبدو الأمر تقريبا أن VC ++ لا يمكن العثور على تطبيقات ASCII المناسبة لهذه الوظائف. يجب أن ألاحظ أيضا أن البرامج التجريبية التي تأتي مع PDCURSES تم تجميعها بشكل جيد، على الرغم من أنها برامج ج.

في برنامج C ++، أقوم بتضمين رأس باستخدام

extern "C" 
{ 
    #include <curses.h> 
}

أنا متأكد من أنني نسيت الارتباط ضد بعض المكتبة القياسية C، لكنني لست متأكدا من واحد.

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

المحلول

GetKeystate () هي وظيفة Windows في "user32.dll"، لذلك عليك أن تكون متأكدا من أنك تربط بين "User32.lib". قد تحتاج أيضا إلى التأكد من أنها تأتي بعد مكتبة pdcurses في قائمة مكتبات الرابط أيضا.

نصائح أخرى

هل قمت ببناء pdcurses على جهازك - مع MS VC ++؟ إذا كان الأمر كذلك، لست متأكدا من ما الأمر. إذا لم يكن الأمر كذلك، فهناك فرصة لائقة أن ما تستخدمه غير متوافق مع MS VC ++. رمز خلط من محيطي C ++ مختلفة محفوفة. يعتمد ذلك أيضا على ما تقصده ب "العديد من الأخطاء الأخرى". إذا كان هذا بمثابة بخس مئات من الأخطاء "، فمن المحتمل أن تكون المشكلة. إذا كان لديك عدد قليل فقط (قل نصف دزينة أو أقل) أخطاء مماثلة، فمن الأفضل أن تكون مشكلة.

حسنا، احسبت هذا؛) أنا أبني مع Scons، كنت أشمل User32.lib مع متغير USER32_LIB, ، مما يؤدي إلى إعداد سلسلة فارغة باستثناء Windows حيث يتم تعريفه إلى User32.lib. في قسم Windows، كان لدي خطأ مطبعي، كان لدي USER32_LIb بدلا من USER32_LIB.

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