Интернет, компьютеры, софт и прочий Hi-Tech | |||||||||||
Избранные докиМетки (все метки)internet, it, интернет, интернет сеть, информационные технологии, ит, по, программное обеспечение, сайт, софт
Подписаться через RSS2Email.ru
Дополнительномониторы, движок, Битрикс, хостинг, сайты, мобильные, электроника, видеокарта, СКС, AXIS |
Генерация .lib из DLL с помощью Visual StudioПрограммисты часто имеют дело со сторонними DLL, написанными третьими лицами, функции которых нужны при разработке. Это разумно и полезно, поскольку до тех пор, пока интерфейс DLL остается прежним, слинкованные с ней другие DLL-и могут легко заменяться без повторной компиляции и пересборки кода. Однако, в Visual Studio чтобы прилинковать к коду стороннюю библиотеку, нужно иметь файл .lib, — самой по себе DLL для этой задачи недостаточно. К счастью, существует способ сгенерировать .lib из DLL с помощью Visual Studio. Создание файла .lib напоминает реверс-инжиниринг содержимого DLL.
И если вы пришли на эту страницу в поисках sqlite3.lib, мы сэкономили вам немало времени :) Напишем скрипт PowerShell для автоматизации генерации dll->lib:
$pattern = "\s+[A-Z0-9]+\s+[A-Z0-9]+\s+[A-Z0-9]{8} (?.*)";
$platform = "x86";
if($args.length > 0)
{
if($args[1])
{
$platform = $args[1];
}
$dll = [System.IO.Path]::GetFilename($args[0]);
$def = [System.IO.Path]::ChangeExtension($dll, "def");
$lib = [System.IO.Path]::ChangeExtension($dll, "lib");
Write-Host ("Generating " + $def + " file…");
"EXPORTS" > $def;
&"dumpbin" "/exports" $args[0] | select-string $pattern | %{$null = $_.Line -match $pattern; ("`t" + $matches['symbol']) >> $def; }
Write-Host ("Generating " + $lib + " file…");
&"lib" ("/def:" + $def) ("/out:" + $lib) ("/machine:" + $platform) | out-null;
Write-Host ("");
}
else
{
Write-Host "Start powershell from VisualStudio commandline then use this script.";
Write-Host "Script takes two parameters: dll filename and platform.";
Write-Host "example: .\GenerateLibFromDll.ps1 hello.dll `"x64`"";
Write-Host "or to process all dlls in the dir: gci *.dll | foreach {&`".\GenerateLibFromDll.ps1`" $_.Name `"x64`"}";;
}
Перевод: Дмитрий Скоробогатов, 18.01.2012. Предыдущие публикации: Последнее редактирование: 2012-01-18 10:09:00 Метки материала: генерация, lib, dll, помощь, visual, studio, генерация lib, visual studio, lib из dll, dll с помощью visual studio, для windows, формат, форматы, по, софт, software, разработка по, софт для windows, документация для программиста, программное обеспечение 4 комментария
А вот как прилинковать dll, скомпилированный VS, в проект, собираемый с помощью mingw? |
||||||||||
| 19.01.2012 18:44:05 | # |
| 19.01.2012 19:23:54 | # |
| 19.01.2012 21:07:38 | # |
© 2007-2012, Дмитрий Скоробогатов.
Разрешается воспроизводить, распространять и/или изменять материалы сайта
в соответствии с условиями GNU Free Documentation License,
версии 1.2 или любой более поздней версии, опубликованной FSF,
если только иное не указано в самих материалах.