سؤال

هذا يبدو أنه ينبغي أن يكون بسيط حقا. جمعت مكتبة في كيو تي (هذا مكتبة نيوات)، وأنتج الملف libnewmat.a. الآن أحتاج إلى دمج هذه المكتبة في مشروع آخر لكنني لا أستطيع الحصول عليها للعمل.

لقد جربت بعض الأشياء المختلفة مع متغير Libs في ملف .pro بما في ذلك:

Win32:LIBS += libnewmat.a #library is in same directory as the project

Win32:LIBS += "C:/...path.../libnewmat.a"

Win32:LIBS += L"C:/...path..." -lnewmat

لقد حاولت حتى استخدام خطوط مائلة للأمام والخلف في المسار ولكنها لم تحدث فرقا. كما أنشأ هذا الاختيار للتأكد من العثور على المكتبة بالفعل:

!exists(libnewmat.a) {
    error("libnewmat.a does not exist")
}

لذلك أعرف أن هذه ليست هي المشكلة. ما لا أفهمه هو أنه عندما أكون Ctrl + F إخراج التحويل البرمجي (الذي يعرض الأوامر التي تستخدمها Qmake تستخدم في سطر الأوامر)، لا أجد أي إشارة إلى المكتبة. لسبب ما لا يوجد متغير Libs الخاص بي أي فرق في سطر الأوامر وهو حيث أتوقع أن أكون عليه. فيما يلي عينة من إخراج المحول البرمجي حيث أتوقع الرجوع إلى المكتبة إذا كان أي شخص يرغب في التحقق مضاعفة:

g++ -c -g -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_OPENGL_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"..\..\..\..\Qt\2009.02\qt\include\QtCore" -I"..\..\..\..\Qt\2009.02\qt\include\QtGui" -I"..\..\..\..\Qt\2009.02\qt\include\QtOpenGL" -I"..\..\..\..\Qt\2009.02\qt\include" -I"..\Visual Studio Projects\NewMatProj\newmat10" -I"..\..\..\..\Qt\2009.02\qt\include\ActiveQt" -I"debug" -I"." -I"..\..\..\..\Qt\2009.02\qt\mkspecs\win32-g++" -o debug\moc_Window.o debug\moc_Window.cpp
g++ -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -mthreads -Wl -Wl,-subsystem,windows -o debug\GLPractice.exe debug/main.o debug/GLWidget.o debug/Window.o debug/CGSWidget.o debug/moc_GLWidget.o debug/moc_Window.o -L"c:\Qt\2009.02\qt\lib" -lopengl32 -lglu32 -lgdi32 -luser32 -lmingw32 -lqtmaind -lQtOpenGLd4 -lQtGuid4 -lQtCored4

أظن أن هناك شيء بسيط حقا أفتقده هنا.

أنا أستخدم QtCreator على نظام التشغيل Windows Vista.

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

المحلول

أعتقد أن شروط النطاق حساسة لحالة الأحرف:

win32:LIBS += libnewmat.a  # lowercase w

نصائح أخرى

لدي نفس المشكلة. أليس من الممكن الارتباط بمكتبة ثابتة من مكتبة ثابتة؟ على أي حال إذا قمت بإجراء مكتبة مشتركة عن طريق إزالة CONFIG+=static من ملف .pro الذي تتجنب هذه المشكلة.

هتاف، H.

لا تحتاج إلى الكثير من Libs في ملف Pro. جرب هذا، عملت من أجلي.

Win32: IncludePath + =.

Win32: Libs + = "C: / ... المسار ... / libnewmat.a"

أو

Win32: dependath + =.

Win32: Libs + = "C: / ... المسار ... / libnewmat.a"

أيضا libnewmat.a قد تكون مكتبة لينكس .. عادة نوافذ libs لديها ملحق .lib .. غير متأكد من ذلك ..

-ATPS.

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