مشکل در ساخت فایل .lib
-
سلام دوستان. دارم از
C++ library > Statical Linked library
استفاده می کنم و می خوام یه فایل دات لیب بسازم.. اما وقتی پروژه رو بیلد می کنم این فایل ساخته نمیشه... کسی می دونه علتش چیه؟
uses :
Qt Creator 2.4.1
platform : windows
Qt 4.8.1project .pro file:
QT -= gui
TARGET = untitled4
TEMPLATE = lib
CONFIG += staticlibSOURCES += untitled4.cpp
HEADERS += untitled4.h
unix:!symbian {
maemo5 {
target.path = /opt/usr/lib
} else {
target.path = /usr/lib
}
INSTALLS += target
} -
p{direction: rtl; text-align: right}. کامپایلرت چیه؟
-
4.8.1 for desktop - mingW
-
p{direction: rtl; text-align: right}. :| MinGW از فایلهای .lib استفاده نمیکنه. بهجاش فایل .a میسازه
-
نمی دونستم. برای ساخت فایل دت لیب باید چه کار کنم حالا؟
ازین فیل دات ای می ت.نم تو ویندوز استفادهد کنم؟ -
[quote author="soroush" date="1346052437"]p{direction: rtl; text-align: right}. :| MinGW از فایلهای .lib استفاده نمیکنه. بهجاش فایل .a میسازه[/quote]
p{direction: rtl; text-align: right}. شما باید اول بهطور کامل یاد بگیرید که یک فایل .a و یا .lib چی هست و همچنین فایلهای .dll و .so چی هستن.
p{direction: rtl; text-align: right}. کتابخونهها دو نوع هستند: استاتیک و داینامیک. در
gcc شما کتابخونههای استاتیک با پسوند .a دارید. و در MSVC با پسوند .lib . وقتی از MinGW استفاده میکنید در واقع از ابزار GNU GCC کتابخونههای استاتیک شما پسوند .a خواهد داشت.p{direction: rtl; text-align: right}. همچنین کتابخانههای داینامیک وجود دارند که توی لینوکس با پسوند .so و توی ویندوز با پسوند .dll مشخص میشه. کد این کتابخانهها داخل کد برنامهٔ شما قرار نمیگیره و به زمان بارگزاری از حافظهٔ خارج از برنامهٔ شما بارگذاری میشه.
p{direction: rtl; text-align: right}. برای استفاده از این کتابخونهها توی ویندوز باید اطلاعات symbol table رو داشته باشید که لینکر بتونه لینک کنه. symbol table یک کتابخانهٔ استاتیک هست.
p{direction: rtl; text-align: right}. به همین دلیل برای استفاده از یک dll شما باید فایل .lib اون رو داشته باشید. برای یک dll که با MinGW ساخته شده باشه، باید فایل .a رو لینک کنید.
-
ممنون سروش جان .. تفاوت اینها رو تا حدی می دونستم ... داکیومنتی هست که بتونم به طور کامل مطالعه کنم این هارو؟
ممنون از لطفت بازم... چیز یاد گرفتم کلی -
p{direction:rtl; text-align:right}. ویکیپدیا منبع بسیار خوبی هست. در مورد linkage و ABI اگر سرچ کنی مطالب زیادی پیدا میکنی.
p{direction:rtl; text-align:right}. از کتابخانههای .a خیلی راحت میتونی توی ویندوز استفاده کنی. اینطور درنظر بگیر که بعد از لینک یک کپی از همون فایل .a داخل کد برنامهت قرار داده میشه.
چند تا لینک:
"ABI":http://en.wikipedia.org/wiki/Application_binary_interface
"Library":http://en.wikipedia.org/wiki/Library_(computing)
"Linker":http://en.wikipedia.org/wiki/Linker_(computing)
"DLL":http://en.wikipedia.org/wiki/Dynamic_link_library
"Static Library":http://en.wikipedia.org/wiki/Static_library
"Dynamic Loading":http://en.wikipedia.org/wiki/Dynamic_loading -
باز هم ممنون سروش جان... از دات ای تونستم استفاده کنم....
و خیلی هم خوب بود... موفق باشی