А как в FASM статично приделать системную DLL ?

Тема в разделе "WASM.BEGINNERS", создана пользователем f2065, 10 янв 2012.

  1. f2065

    f2065 Eugene

    Публикаций:
    0
    Регистрация:
    18 авг 2010
    Сообщения:
    24
    Адрес:
    Russia,Moscow
    Например функцию InitCommonControls вызывать не обязательно (там где она нужна), надо только чтобы она была прописана в импорте и таким образом загрузилась бы Comctl32.dll.
    В TASM для этого достаточно было написать extrn InitCommonControls:near, и всё - эффект достигался без invoke InitCommonControls.

    А сейчас вот возник вопрос как это сделать в FASM ?
    Он в этом плане умный слишком - всё что описано в типовых макросах library и import - он реально прописывает в секции импорта только если в коде есть вызовы этих функций (что в принципе удобно - у меня заранее прописано ~10000 функций от основных DLL, а он линкует только нужные). Но вот если я хочу принудительно подключить DLL, не вызывая явным образом её функции ?

    Я хочу так вот приделать riched20.dll
    Чтобы не делать LoadLibrary.
     
  2. Ezrah

    Ezrah Member

    Публикаций:
    0
    Регистрация:
    22 мар 2011
    Сообщения:
    411
    xxxxx = InitCommonControls
     
  3. Z3N

    Z3N New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2009
    Сообщения:
    812
    virtual at 0
    invoke InitCommonControls
    end virtual

    попадёт в импорт, не попадёт в код
     
  4. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    f2065
    Можно ещё и так:
    Код (Text):
    1. macro refer [arg*] { times arg-arg }
    2. refer InitCommonControls,SecondFunction
    3.  
    4. data import
    5.     library comctl32,'comctl32.dll',\
    6.             riched20,'riched20.dll'
    7.    
    8.     import comctl32,\
    9.         InitCommonControls,'InitCommonControls'
    10.     import riched20,\
    11.         SecondFunction,2
    12. end data
    А чем плохо LoadLibrary для riched20.dll?
     
  5. f2065

    f2065 Eugene

    Публикаций:
    0
    Регистрация:
    18 авг 2010
    Сообщения:
    24
    Адрес:
    Russia,Moscow
    Лишний код, плюс ещё надо проверять ошибку и msgbox юзеру про это… А так винда сама это всё сделает. Вобщем по описанному методу richedit получилось приделать, теперь его контрол работает нормально без LoadLibrary.