مشكلة رابط API ويندوز أصلي على كيو تي + + Win32 ومينغو

StackOverflow https://stackoverflow.com/questions/267672

  •  06-07-2019
  •  | 
  •  

سؤال

وأنا أحاول أن استخدام Windows الأصلي API مع كيو تي باستخدام مجموعة أدوات مينغو. هناك مشاكل الارتباط مع بعض الوظائف. ما يحدث؟ هل هذا الخلل مع اسم تغيير اسم مينغو؟

#ifdef Q_WS_WIN
    HWND hwnd = QWidget::winId();
    HDC hdcEMF  = CreateEnhMetaFile(NULL, NULL, NULL, NULL ) ;
    Rectangle(hdcEMF,100,100,200,200);
    HENHMETAFILE hemf = CloseEnhMetaFile(hdcEMF);
    OpenClipboard(hwnd);
    EmptyClipboard();
    SetClipboardData(CF_ENHMETAFILE,hemf);
    CloseClipboard();
#else   

والأخطاء:

وإشارة غير محددة إلى `CreateEnhMetaFileW @ 16 '

والمرجعية غير معرفة ل`مستطيل @ 20 '

وإشارة غير محددة إلى `CloseEnhMetaFile @ 4 '

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

المحلول

ويتم تعريف CreateEnhMetaFileW() الوظائف وCloseEnhMetaFile() في مكتبة ثابتة Gdi32.lib، بحيث يكون لديك للتأكد من ربط ضد ذلك. حاول إضافة -lgdi32 إلى نهاية سطر الأوامر الخاص بك الذي تستخدمه لتجميع. إذا لم يفلح ذلك، قد يكون لديك لتحديد المسار الكامل إلى Gdi32.lib بإضافة -L/path/to/folder/containing/the/library -lgdi32 بدلا من ذلك.

نصائح أخرى

إذا كنت تريد استخدام ويندوز API في التطبيق كيو تي ثم ليس هناك حاجة لاعلان WINAPI ظائف خارجي "C"، فقط ما يلي:

#include <qt_windows.h>

في ملف المشروع (.pro) إضافة المكتبات التي تستخدمها:

LIBS += -luser32 -lshell32 -lgdi32

ومن الممكن أن يتم تضمين وظائف، ولكن الحصول على المهترئ بسبب افتراض C ++.

وانظروا إلى خارجي C {إعلان}. والمقصود أنه لإعلان الوظائف التي لا ينبغي تسمية المهترئ لحساب التعدد / الحمولة الزائدة. (IE ظيفتين بنفس الاسم).

وtorn الحل عملت بالنسبة لي.

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

وتتضمن # وتتضمن # الخاص بك إلى Win32 API على رأس

وأخيرا LIBS + = اسم -llibrary.

وتجدر الإشارة إلى أنك قد تضطر إلى التخلي -L عن الطريق الصحيح للغاية.

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