mirror of
https://git.vladimir.cc/vladimir/ewsdr.git
synced 2026-08-26 23:17:34 +00:00
libopus.dll собирается кросс-компилятором mingw-w64, а opus по умолчанию включает защиту стека (OPUS_STACK_PROTECTOR → -fstack-protector-strong). В mingw эта защита живёт в отдельной библиотеке, поэтому в импортах DLL стоит libssp-0.dll, и без неё LoadLibrary возвращает «модуль не найден» — жалуясь на ЗАВИСИМОСТЬ, а не на саму libopus. Снаружи это выглядит как «библиотека лежит рядом с exe, а её не видят»: ровно на это и напоролись. Проверено разбором заголовков самой DLL: PE32+ x86-64 (разрядность верная), экспорт полный, импорт — KERNEL32.dll, msvcrt.dll и libssp-0.dll. Альтернатива — собирать opus с -DOPUS_STACK_PROTECTOR=OFF и не таскать файл; выбран вариант с DLL, чтобы у кодека, который разбирает присланное браузером, защита стека осталась.
59 lines
2.7 KiB
Plaintext
59 lines
2.7 KiB
Plaintext
[Setup]
|
|
AppId={{6D65ED5C-AF9A-4A7E-AB17-8AE9125CA6E9}}
|
|
AppName=EWSDR
|
|
AppVersion=__VERSION__
|
|
DefaultDirName={pf}\EWSDR
|
|
DefaultGroupName=EWSDR
|
|
UninstallDisplayIcon={app}\ewsdr.exe
|
|
Compression=lzma2
|
|
SolidCompression=yes
|
|
OutputDir=__OUTPUT_DIR__
|
|
ArchitecturesAllowed=x64
|
|
ArchitecturesInstallIn64BitMode=x64
|
|
OutputBaseFilename=__OUTPUT_FILENAME__
|
|
|
|
[Languages]
|
|
Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl"
|
|
|
|
[Tasks]
|
|
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
|
|
|
|
[Files]
|
|
Source: "__SOURCE_PATH__\__ARCH__\ewsdr.exe"; DestDir: "{app}"; DestName: "ewsdr.exe"; Flags: ignoreversion
|
|
Source: "__SOURCE_PATH__\__ARCH__\wdsp.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
Source: "__SOURCE_PATH__\__ARCH__\libfftw3-3.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
Source: "__SOURCE_PATH__\__ARCH__\libfftw3f-3.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
Source: "__SOURCE_PATH__\__ARCH__\libportaudio.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
Source: "__SOURCE_PATH__\__ARCH__\libfec.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
Source: "__SOURCE_PATH__\__ARCH__\libiio.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
Source: "__SOURCE_PATH__\__ARCH__\libserialport-0.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
Source: "__SOURCE_PATH__\__ARCH__\libusb-1.0.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
Source: "__SOURCE_PATH__\__ARCH__\libxml2.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
Source: "__SOURCE_PATH__\__ARCH__\libzstd.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
Source: "__SOURCE_PATH__\__ARCH__\libad9361.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
Source: "__SOURCE_PATH__\__ARCH__\ewsdr_dmr.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
Source: "__SOURCE_PATH__\__ARCH__\libmbe.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
Source: "__SOURCE_PATH__\__ARCH__\libopus.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
Source: "__SOURCE_PATH__\__ARCH__\libssp-0.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
|
|
[Icons]
|
|
Name: "{group}\EWSDR"; Filename: "{app}\ewsdr.exe"
|
|
Name: "{group}\EWSDR OpenGL"; Filename: "{app}\ewsdr.exe"; Parameters: "--opengl"
|
|
|
|
Name: "{commondesktop}\EWSDR"; Filename: "{app}\ewsdr.exe"; Tasks: desktopicon
|
|
Name: "{commondesktop}\EWSDR OpenGL"; Filename: "{app}\ewsdr.exe"; Parameters: "--opengl"; Tasks: desktopicon
|
|
|
|
[Run]
|
|
Filename: "{app}\ewsdr.exe"; Description: "{cm:LaunchProgram,EWSDR}"; Flags: nowait showcheckbox
|
|
|
|
[code]
|
|
procedure CurPageChanged(CurPageID: Integer);
|
|
var
|
|
ResultCode: Integer;
|
|
begin
|
|
if CurPageID = wpWelcome then
|
|
begin
|
|
Exec('taskkill', '/F /IM ewsdr.exe', '', 0, ewWaitUntilTerminated, ResultCode);
|
|
end;
|
|
end;
|