Если у вас есть DLL и вы хотите использовать ее в своем коде с __declspec(dllimport)
, вы можете легко создать необходимый файл LIB, если у вас есть файл DEF для DLL:
lib /def:mydll.def /nologo /machine:x86
, который создает mydll.lib
Эта команда должна выполняться в командной строке Visual Studio SDK.
Файл DEF может быть легко записан вручную, если у вас его нет:
Вы открываете DLL в DependencyWalker (http://www.dependencywalker.com),, выбираете «Сохранить как» -> «Текст со списками импорта / экспорта» и получаете имена и порядковые номера всех экспортируемых функций в текстовом файле, например:
Export Ordinal Hint Function Entry Point
------ ----------- ----------- -------------------------------- -----------
[C ] 2 (0x0002) 1 (0x0001) gsasl_base64_from 0x000024F0
[C ] 3 (0x0003) 2 (0x0002) gsasl_base64_to 0x000024A0
[C ] 4 (0x0004) 3 (0x0003) gsasl_callback 0x000018B0
[C ] 5 (0x0005) 4 (0x0004) gsasl_callback_hook_get 0x00001900
[C ] 6 (0x0006) 5 (0x0005) gsasl_callback_hook_set 0x000018F0
[C ] 7 (0x0007) 6 (0x0006) gsasl_callback_set 0x000018A0
[C ] 8 (0x0008) 7 (0x0007) gsasl_check_version 0x00001870
[C ] 9 (0x0009) 8 (0x0008) gsasl_client_mechlist 0x00001E20
[C ] 10 (0x000A) 9 (0x0009) gsasl_client_start 0x00001F40
Остальное быстро делается.
Создайте DEF файл , который имеет этот формат:
EXPORTS
gsasl_base64_from @2
gsasl_base64_to @3
gsasl_callback @4
gsasl_callback_hook_get @5
gsasl_callback_hook_set @6
gsasl_callback_set @7
gsasl_check_version @8
gsasl_client_mechlist @9
gsasl_client_start @10
gsasl_client_suggest_mechanism @11
Число за @ - порядковый номер.
P.D:
DependencyWalker может даже отменить декорацию загадочных имен экспорта C ++, таких как
Foo@@YGHHH@Z --> int Foo(int, int).