أين WCTYPE في Visual C 2008 Express؟
-
22-09-2019 - |
سؤال
أقوم بنقل برنامج الطرف الثالث من 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