مشکل در ساخت فایل .lib



  • سلام دوستان. دارم از
    C++ library > Statical Linked library
    استفاده می کنم و می خوام یه فایل دات لیب بسازم.. اما وقتی پروژه رو بیلد می کنم این فایل ساخته نمیشه... کسی می دونه علتش چیه؟
    uses :
    Qt Creator 2.4.1
    platform : windows
    Qt 4.8.1

    project .pro file:

    QT -= gui

    TARGET = untitled4
    TEMPLATE = lib
    CONFIG += staticlib

    SOURCES += 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



  • باز هم ممنون سروش جان... از دات ای تونستم استفاده کنم....
    و خیلی هم خوب بود... موفق باشی


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.