উত্তর:
এটি করার সঠিক উপায়টি হ'ল:
LIBS += -L/path/to -lpsapi
এইভাবে এটি Qt দ্বারা সমর্থিত সমস্ত প্ল্যাটফর্মগুলিতে কাজ করবে। ধারণাটি হ'ল আপনাকে ডিরেক্টরিটি লাইব্রেরির নাম থেকে আলাদা করতে হবে (এক্সটেনশন ছাড়াই এবং কোনও 'lib' উপসর্গ ছাড়াই)। অবশ্যই, আপনি যদি একটি উইন্ডোজ নির্দিষ্ট lib অন্তর্ভুক্ত করা হয়, এটি সত্যিই কোন ব্যাপার না।
আপনি যদি প্রজেক্ট ডিরেক্টরিতে আপনার lib ফাইলগুলি সংরক্ষণ করতে চান তবে আপনি সেগুলি $$_PRO_FILE_PWD_
ভেরিয়েবলের সাথে উল্লেখ করতে পারেন , উদাহরণস্বরূপ:
LIBS += -L"$$_PRO_FILE_PWD_/3rdparty/libs/" -lpsapi
qmake -tp vc
কোনও লিবসের নাম পাই না Additional Dependencies
, তবে বনাম প্রকল্পটি ভালভাবে চালায়। Additional Dependencies
বনাম যুক্ত করার জন্য আরও কিছু পদ্ধতি রয়েছে তার মানে কি ?
LIBS += -lGdi32
।
LIBS + = সি: \ প্রোগ্রাম ফাইল \ ওপেনসিভি \ lib
আপনি প্রোগ্রাম ফাইলগুলিতে সাদা স্পেস ব্যবহার করছেন বলে কাজ করবে না। এই ক্ষেত্রে আপনাকে উদ্ধৃতি যুক্ত করতে হবে, সুতরাং ফলাফলটি এর মতো দেখাবে: LIBS + = "সি: \ প্রোগ্রাম ফাইলগুলি \ ওপেনসিভি \ lib" । আমি সাদা-স্থানের স্থানে লাইব্রেরি রাখার প্রস্তাব দিই ;-)
WINDIR = $$DIR
,WINDIR ~=s,/,\\,g
অতিরিক্ত ত্রুটিযুক্ত পথটি হারিয়ে যাওয়ার কারণে আপনি যে ত্রুটিটি বোঝাতে চাইছেন। এটি যুক্ত করার চেষ্টা করুন: INCLUDEPATH + = সি: \ পথ \ থেকে \ ফাইলগুলি অন্তর্ভুক্ত করুন \ আশা করি এটি কাজ করে। শুভেচ্ছা।
এবং একাধিক গ্রন্থাগার ফাইল যুক্ত করতে আপনি নীচের মত লিখতে পারেন:
ইনক্লুডিপথ * = ই: / ডিবাগলাইবারি / ভিটিকে ই: / ডিবাগলাইবারি / ভিটিকে / সাধারণ ই: / ডিবাগলাইবারি / ভিটিকে / জেনেরিক ফিল্টারিং ই: / ডিবাগলাইবারি / ভিটিকে / গ্রাফিক্স ই: / ডিবাগলিবারি / ভিটিকিউরিগিউরিউ কিউটি ই: / ডিবাগলিবারি / ভিটিকে / হাইব্রিড ই: / ডিবাগলাইবারি / ভিটিকে / ইমেজিং ই: / ডিবাগলাইবারি / ভিটিকে / আইও ই: / ডিবাগলাইবারি / ভিটিকে / সমান্তরাল ই: / ডিবাগলাইবারি / ভিটিকে / রেন্ডারিং ই: / ডিবাগলিবারি / ভিটিকে / ইউটিলিটিস : / ডিবাগলিবারি / ভিটিকে / ভলিউম রেন্ডারিং ই: / ডিবাগলিবারি / ভিটিকে / উইজেটস ই: / ডিবাগলাইবারি / ভিটিকে / মোড়ানো
Libs * = -LE: / DebugLibrary / VTKBin / বিন / মুক্তি -lvtkCommon -lvtksys -lQVTK -lvtkWidgets -lvtkRendering -lvtkGraphics -lvtkImaging -lvtkIO -lvtkFiltering -lvtkDICOMParser -lvtkpng -lvtktiff -lvtkzlib -lvtkjpeg -lvtkexpat -lvtkNetCDF -lvtkexoIIc -lvtkftgl -lvtkfreetype -lvtkHybrid -lvtkVolumeRendering -lQVTKWidgetPlugin -lvtkGeneric ফিল্টারিং
আপনি যদি কেবল নিজের অ্যাপ্লিকেশনটি নিজে ব্যবহার না করে গ্রাহকদের মেশিনে আপনার অ্যাপ্লিকেশন স্থাপন করতে চান তবে আমরা দেখতে পেলাম যে LIBS+= -Lxxx -lyyy
সমস্যাটি না হলে এই পদ্ধতিটি বিভ্রান্তির কারণ হতে পারে।
আমরা Qt ব্যবহার করে লিনাক্স, ম্যাক এবং উইন্ডোজের জন্য অ্যাপ্লিকেশনগুলি বিকাশ করি। আমরা সম্পূর্ণ, একা একা অ্যাপ্লিকেশন শিপ। সুতরাং সমস্ত নন-সিস্টেম লাইব্রেরিগুলি মোতায়েন প্যাকেজে অন্তর্ভুক্ত করা উচিত। আমরা চাই আমাদের গ্রাহকরা সমস্ত ওএসের জন্য একই ইউএসবি স্টিক থেকে অ্যাপ্লিকেশনটি চালাতে সক্ষম হন। প্ল্যাটফর্মের সামঞ্জস্যের কারণে ইউএসবি স্টিকটি অবশ্যই FAT32 হিসাবে ফর্ম্যাট করা উচিত, যা (লিনাক্স) সিমলিংকগুলি সমর্থন করে না।
আমরা LIBS+= -Lxxx -lyyy
একটি ব্ল্যাক বাক্সের চেয়ে অনেক বেশি প্রতিমাটি পেয়েছি :
লিঙ্কারের সাহায্যে পাওয়া (স্ট্যাটিক বা ডায়নামিক) লাইব্রেরির ফাইলপথটি কী তা আমরা ঠিক জানি না। এটি অসুবিধাজনক। আমাদের ম্যাক লিঙ্কারটি নিয়মিতভাবে লাইবগুলি ব্যবহার করা উচিত বলে ভেবেছিল তার থেকে আলাদা found এটি ওপেনএসএসএল লাইব্রেরিগুলির সাথে বেশ কয়েকবার ঘটেছিল যেখানে ম্যাক লিঙ্কারটি আমাদের অনুরোধিত সংস্করণটির চেয়ে তার নিজস্ব - পুরানো, বেমানান - ওপেনএসএসএল সংস্করণ খুঁজে পেয়েছিল এবং ব্যবহার করেছে।
লিঙ্কার লাইব্রেরিতে সিমলিংক ব্যবহার করে থাকে তা আমরা বহন করতে পারি না কারণ এটি স্থাপনার প্যাকেজটি ভেঙে দেয়।
আমরা লাইব্রেরির নাম থেকে দেখতে চাই যে আমরা একটি স্ট্যাটিক বা ডায়নামিক লাইব্রেরি যুক্ত করি।
সুতরাং আমাদের বিশেষ ক্ষেত্রে আমরা কেবল পরম ফাইলপথ ব্যবহার করি এবং সেগুলি বিদ্যমান কিনা তা পরীক্ষা করে দেখি। আমরা সমস্ত syllinks অপসারণ।
প্রথমে আমরা কোন অপারেটিং সিস্টেমটি ব্যবহার করছি তা সন্ধান করে এটি কনফিগ ভেরিয়েবলে রেখেছি। এবং, উদাহরণস্বরূপ লিনাক্স bit৪ বিট এর জন্য:
linux64 {
LIBSSL= $$OPENSSLPATH/linux64/lib/libssl.a
!exists($$LIBSSL): error ("Not existing $$LIBSSL")
LIBS+= $$LIBSSL
LIBCRYPTO= $$OPENSSLPATH/linux64/lib/libcrypto.a
!exists($$LIBCRYPTO): error ("Not existing $$LIBCRYPTO")
LIBS+= $$LIBCRYPTO
}
সমস্ত নির্ভরতাগুলি ডিপোমেন্ট প্যাকেজে অনুলিপি করা যেতে পারে কারণ আমরা তাদের ফাইলপথগুলি জানি।
আমি সম্পূর্ণতার জন্য যুক্ত করতে চাই যে আপনি কেবলমাত্র লাইব্রেরি পাঠ যোগ করতে পারেন যেখানে এটি নির্ভরশীল গ্রন্থাগারের সন্ধান করবে (যা আপনার কোডে সরাসরি উল্লেখ করা যেতে পারে না তবে আপনার ব্যবহৃত গ্রন্থাগারের প্রয়োজন হতে পারে)।
তুলনা করার জন্য, এটি LIBPATH পরিবেশ যা কিছু করে তার সাথে মিলে যাবে তবে Qt স্রষ্টার মধ্যে এটির ধরণের অস্পষ্টতা এবং ভালভাবে নথিভুক্ত নয়।
আমি যেভাবে এদিকে এসেছি তা নিম্নলিখিত:
LIBS += -L"$$_PRO_FILE_PWD_/Path_to_Psapi_lib/"
মূলত যদি আপনি প্রকৃত লাইব্রেরির নাম না সরবরাহ করেন তবে এটি নির্ভরশীল লাইব্রেরিগুলিতে অনুসন্ধান করবে সেদিকে পথ যুক্ত করে। সিনট্যাক্সের পার্থক্যটি সামান্য তবে নির্ভরশীল লাইব্রেরিগুলি সন্ধান করার জন্য কেবল PATH সরবরাহ করতে এটি খুব দরকারী। প্রতিটি পাথের পৃথক লাইব্রেরি সরবরাহ করার জন্য এটি কেবল কখনও কখনও ব্যথা হয় যেখানে আপনি জানেন যে তারা সমস্ত নির্দিষ্ট ফোল্ডারে রয়েছে এবং কিউটি ক্রিয়েটর তাদের এনে নেবে।
প্রো। ইন: LIBS += Ole32.lib OleAut32.lib Psapi.lib advapi32.lib
ইন। এইচ / .সিপি: #pragma comment(lib,"user32.lib")
#pragma comment(lib,"psapi.lib")