Site Tools


dll_динамические_библиотеки

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

dll_динамические_библиотеки [2016/03/27 03:29] (current)
conovaloff created
Line 1: Line 1:
 +Хорошая информация по данному вопросу,​ дана в книге С++ Cookbook \ C++ Сборник рецептов. Или [[http://​msdn.microsoft.com/​ru-ru/​library/​z4zxe9k8.aspx | Microsoft MSDN]] или [[http://​citforum.ru/​book/​cook/​dll0.shtml]]
  
 +==== Определение внешних функций ====
 +... доступных из DLL при его работе.
 +
 +Используется либо [[http://​msdn.microsoft.com/​ru-ru/​library/​d91k01sh.aspx|DEF-файл]],​ \\
 +либо [[http://​msdn.microsoft.com/​ru-ru/​library/​a90k134d.aspx|__declspec(dllexport)]] перед функцией,​ классом,​ данными. ​
 +
 +==== Компиляция ====
 +(windows VS): \\
 +
 +Пример компиляции объектного файла:
 +  cl -c -nologo -EHsc -GR -Zc:​forScope -Zc:wchar_t -Fohellobeatles.obj hellobeatles.cpp
 +Пример компиляции статической библиотеки:​
 +  lib -nologo -out:​georgeringo.lib george.o ringo.o georgeringo.o
 +Пример компиляции DLL
 +  link -nologo -dll -out:​libgeorgeringo.dll -implib:​georgeringo.lib george.obj ringo.obj georgeringo.obj
 +Пример компиляции приложения
 +  link -nologo -out:​hellobeatles.exe georgeringo.lib libjohnpaul.lib hellobeatles.obj
 +
 +== Получение lib из dll ==
 +Используется implib.exe (для Borland) \\
 +или [[http://​support.microsoft.com/​default.aspx?​scid=kb;​EN-US;​Q131313]]
 +==== Получение информации из стороннего DLL файла ====
 +Поумолчанию,​ используется утилита DUMPBIN из командной строки VisualStudio\\
 +
 +Пример испльзования,​ для получения списка доступных функций из DLL:
 +  C:​\CPP\bibliotek\georgeringo>​DUMPBIN /EXPORTS C:​\Windows\System32\basecsp.dll
 +  Dump of file C:​\Windows\System32\basecsp.dll
 +  ​
 +  File Type: DLL
 +  ​
 +  Section contains the following exports for BaseCSP.dll
 +  ​
 +    00000000 characteristics
 +    4CE793E4 time date stamp Sat Nov 20 13:24:52 2010
 +        0.00 version
 +           1 ordinal base
 +          28 number of functions
 +          28 number of names
 +  ​
 +    ordinal hint RVA      name
 +  ​
 +          1    0 000028B5 CPAcquireContext
 +          2    1 000029C0 CPAcquireContextW
 +          3    2 000095F8 CPCreateHash
 +          4    3 0000955D CPDecrypt
 +          5    4 00008F60 CPDeriveKey
 +          6    5 00009868 CPDestroyHash
 +          7    6 00009038 CPDestroyKey
 +          8    7 00009A66 CPDuplicateHash
 +          9    8 00009B2A CPDuplicateKey
 +         ​10 ​   9 000094BC CPEncrypt
 +         ​11 ​   A 00009340 CPExportKey
 +         ​12 ​   B 00008E7E CPGenKey
 +         ​13 ​   C 0000992A CPGenRandom
 +         ​14 ​   D 000092B6 CPGetHashParam
 +         ​15 ​   E 000090EF CPGetKeyParam
 +         ​16 ​   F 00001FCA CPGetProvParam
 +         ​17 ​  10 000099A7 CPGetUserKey
 +         ​18 ​  11 000096CF CPHashData
 +         ​19 ​  12 00009753 CPHashSessionKey
 +         ​20 ​  13 000093DB CPImportKey
 +         ​21 ​  14 000033EB CPReleaseContext
 +         ​22 ​  15 00009232 CPSetHashParam
 +         ​23 ​  16 0000906C CPSetKeyParam
 +         ​24 ​  17 000091B0 CPSetProvParam
 +         ​25 ​  18 000097DC CPSignHash
 +         ​26 ​  19 0000989C CPVerifySignature
 +         ​27 ​  1A 00009C69 DllRegisterServer
 +         ​28 ​  1B 00009BEE DllUnregisterServer
 +  ​
 +  Summary
 +  ​
 +        1000 .data
 +        1000 .reloc
 +        6000 .rsrc
 +       1A000 .text
 +
 +=== Использование ​ extern "​C"​ в коде ===
 +Хорошо описано на странице [[http://​www.gamedev.ru/​code/​forum/?​id=56367]]
 +
 +==== Получение lib из def ====
 +  dlltools -k -d sqlite.def -l sqlite.dll
 +  а так же это могут делать lib.exe из msvc и implib из borland
 +
 +
 +==== Вопросы ====
 +TODO: написать собственные примеры lib dll def и код их использования между собой
 +== 1 ==
 +Что такое:
 +  * lib
 +  * dll
 +  * def
 +  * a
 +и за что они отвечают
 +
 +== 2 ==
 +Статические и динамические - разность в использование,​ подключение,​ создание и т.д.
dll_динамические_библиотеки.txt · Last modified: 2016/03/27 03:29 by conovaloff

Page Tools