سؤال

أقوم بنقل برنامج الطرف الثالث من Linux إلى Windows باستخدام Visual C 2008 Express.

لدي مشكلة فقط مع وظيفة "wctype". تم الإعلان عنه في ٪ VCDIR ٪/include/wctype.h على النحو التالي:

 _MRTIMP2 wctype_t __cdecl wctype (const char *);

ولكن ، عند محاولة ربط A ، لديك الخطأ التالي:

C:\test>cl test.c
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 15.00.30729.01 for 80x86
Copyright (C) Microsoft Corporation.  All rights reserved.

test.c
Microsoft (R) Incremental Linker Version 9.00.30729.01
Copyright (C) Microsoft Corporation.  All rights reserved.

/out:test.exe
test.obj
test.obj : error LNK2019: unresolved external symbol _wctype referenced in function _main
test.exe : fatal error LNK1120: 1 unresolved externals

رمز الاختبار يتبع:

#include <wctype.h>

int
main (void)
{
  return (int) wctype ("alpha");
}

كما ترون في رسالة الخطأ ، يتم تجميع الكود موافق ، ولكن لا يمكن ربطه.

ما يجب القيام به؟ أنا لست مطورًا لهذا البرنامج ، لذلك لا أريد استبدال وظيفة "wctype" بوظيفة أخرى ، لأنه يمكن أن يخلط بين المطورين الأصليين.

شكرا على الصبر.

ملاحظة: لقد نظرت أيضًا إلى جدول استيراد ملف msvcrt90.dll مع مشاة التبعية ولا توجد وظيفة "wctype".

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

المحلول

جرب هذا:

cl test.c /link MSVCPRT.LIB

نصائح أخرى

تحتاج إلى الارتباط مع libcp.lib كما هو مذكور هنا:

http://msdn.microsoft.com/en-us/library/aa246681(vs.60).aspx

إذا كنت تستخدم msvcprt.lib ، فسوف يتعين عليك إعادة توزيع DLL اعتمادًا على الإعداد الخاص بك (على سبيل المثال msvcp90.dll). إذا كنت لا ترغب في إعادة التوزيع ، جرب هذا:

cl test.c /link libcpmt.lib

قائمة بجميع المكتبات التي ترتبط بها هنا (انظر إلى القاع): http://msdn.microsoft.com/en-us/library/abx4dbyh.aspx

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