From 2defd6e45687950cad91f1898f64ca35cb081a8b Mon Sep 17 00:00:00 2001 From: Vladimir Date: Wed, 26 Aug 2026 11:10:04 +0300 Subject: [PATCH] =?UTF-8?q?build(installer):=20=D1=80=D1=8F=D0=B4=D0=BE?= =?UTF-8?q?=D0=BC=20=D1=81=20libopus=20=D0=BA=D0=BB=D0=B0=D0=B4=D1=91?= =?UTF-8?q?=D1=82=D1=81=D1=8F=20libssp-0.dll?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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, чтобы у кодека, который разбирает присланное браузером, защита стека осталась. --- other/ewsdr_inno_setup.iss | 1 + 1 file changed, 1 insertion(+) diff --git a/other/ewsdr_inno_setup.iss b/other/ewsdr_inno_setup.iss index 2e1dd3f..9e70ead 100644 --- a/other/ewsdr_inno_setup.iss +++ b/other/ewsdr_inno_setup.iss @@ -34,6 +34,7 @@ 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"