Как создать файл .lib при наличии файла .dll и файла заголовка

Я пытаюсь создать приложение в Visual Studio, которое будет иметь доступ к уже существующему файлу .dll. Мне нужно приложение для вызова подпрограмм. У меня также есть файл заголовка, который уже существует.

Я искал в Интернете и обнаружил, что мне нужно создать файл .lib. Глядя на похожие вопросы здесь, я нашел ссылку: http://support.microsoft.com/kb/131313 Однако я не могу следовать указаниям.

Информация в ссылке говорит о создании файла DEF (я читал в другом месте, что он должен быть скомпилирован как DLL с тем же именем, но не уверен, что это за имя, такое же имя, как у файла .dll?) . Но я не понимаю первое направление - «Использовать DUMPBIN / EXPORTS». Затем мне нужно «заглушить» функции, а затем что-то делать с файлами .OBJ (я не знаю, что это за файлы).

Есть ли какие-либо пошаговые инструкции, подобные приведенной выше ссылке, по которым легко следовать?

43
задан hde 20 February 2012 в 11:20
поделиться

1 ответ

Р • ще РѕРґРёРЅ вариант СЃ помощью powershell, dumpbin Рё lib.
Р’Р · СЏС‚ Рѕ РѕС‚ СЃСЋРґР Рё РґРѕСЂР°Р±РѕС °‚ ано: http://xbb.uz/dev/Gjenjeracija-.lib-iz-DLL-s-pomoshhju-Visual-Studio

$pattern = "\s+([A-Z0-9]+)\s+[A-Z0-9]+\s+[A-Z0-9]{8} (.*)";
$platform = "x86";

if($args.length)
{
    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…");
    $content="EXPORTS`n";
    &"dumpbin" "/exports" $args[0] | select-string $pattern | %{$null = 

Р • ще РѕРґРёРЅ вариант СЃ помощью powershell, dumpbin Рё lib.
Р’Р · СЏС‚ Рѕ РѕС‚ СЃСЋРґР Рё РґРѕСЂР°Р±РѕС °‚ ано: http://xbb.uz/dev/Gjenjeracija-.lib-iz-DLL-s-pomoshhju-Visual-Studio

[110].Line -match $pattern; $str='{0,9}{1,-30} @{2}' -f " ", $matches[2], $matches[1]; $content+=($str+"`n"); } $content | Out-File $def -Encoding Ascii; 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`"

Р • ще РѕРґРёРЅ вариант СЃ помощью powershell, dumpbin Рё lib.
Р’Р · СЏС‚ Рѕ РѕС‚ СЃСЋРґР Рё РґРѕСЂР°Р±РѕС °‚ ано: http://xbb.uz/dev/Gjenjeracija-.lib-iz-DLL-s-pomoshhju-Visual-Studio

[110].Name `"x64`"}";; }
-1
ответ дан 26 November 2019 в 22:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: