|
0 / 0 / 0
Регистрация: 13.12.2017
Сообщений: 3
|
||||||
Отредактировать программу exe, чтобы можно было использовать как dll13.12.2017, 18:41. Показов 1890. Ответов 4
Есть проект на C++, который отображает спектрограмму звука на системном микшере (грубо говоря выход на колонки).
Я хотел изменить его, чтобы можно было использовать как dll, вкратце программа работает так: открывает устройство записи звука по-умолчанию функцией waveInOpen, а затем через callback вызывается с++ функция Process которая заполняет массив fft значениями и выводит на экран (но вывод, конечно, в библиотеке мне не нужен). Массив я сам передам, я не пойму как запустить саму библиотеку, ведь при импорте в другом приложении, как я понял она сама не запускается, надо сделать какую-то функцию инициализации, по типу main, которая запустит процесс, а уже потом можно будет считывать массив, например по таймеру. Я набросал проект в Visual Studio 2017 (приложен), там две функции экспортируются _Initialize и GetFFT, пока процесс преобразования не запущен GetFFT возвращает 5, а если запустится, то будет 10, мне этого достаточно, чтобы двигаться дальше. Я бы хотел, кто разбирается, помочь мне заполнить пустую функцию _Initialize по типу уже написанной CWaveInFFTApp::InitInstance() от exe приложения (она закомментирована, чтобы dll нормально компилировалась), чтобы процесс преобразования запустился и callback функция Process начала вызываться по мере наполнения буфера (несколько раз в секунду). Конечно все окна, диалоги, вывод графиков можно смело удалять. Заранее всем огромное спасибо!
0
|
||||||
| 13.12.2017, 18:41 | |
|
Ответы с готовыми решениями:
4
Как создать программу в С++, чтобы его можно было запускать как исполняемый .exe файл? Как использовать куки, чтобы потом было можно их использовать в запросах Можно ли упаковать в exe'шник используемые в проекте библиотеки так, чтобы можно было запустить программу на машине без .NET |
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
|
| 13.12.2017, 19:31 | |
|
0
|
|
|
0 / 0 / 0
Регистрация: 13.12.2017
Сообщений: 3
|
|
| 13.12.2017, 19:44 [ТС] | |
|
Пишет DllMain уже определен в файле .obj, а этот файл не текстовый. Что-то я совсем запутался, так-то та функция CWaveInFFTApp::InitInstance() от exe видимо запускается как DllMain, поэтому и после её закомментирования начинает работать импорт dll в другом приложении. Возможно нужно просто что-то в ней поменять, чтобы запустилось всё нормально. Но никаких ошибок толком ничего, просто когда она есть, то после вызова какой-нибудь экспортируемой функции в приложении пишет "Не удается загрузить DLL "waveInFFT.dll": Произошел сбой в программе инициализации библиотеки динамической компоновки (DLL)." А когда её нет, то функция вызывается, возвращает 5, всё ок, но на 10 не переходит, то есть сам процесс захвата звука не начинается...
0
|
|
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
|||
| 13.12.2017, 19:56 | |||
|
1) Вызываете в основной программе LoadLibrary. 2) Вызываете auto init=GetProcAddress(dllHandle,"_Initiali ze"). 3) Вызываете (*init)(); Добавлено через 4 минуты
0
|
|||
|
0 / 0 / 0
Регистрация: 13.12.2017
Сообщений: 3
|
|
| 15.12.2017, 14:26 [ТС] | |
|
Я пробовал менять в конце функции return FALSE на return TRUE, не запускается инициализация и ошибок нет, то есть GetFFT возвращает 5. Попробовал сейчас if заменить на return TRUE, тоже самое...
0
|
|
| 15.12.2017, 14:26 | |
|
Помогаю со студенческими работами здесь
5
Как сделать, чтобы можно было использовать графический редактор WindowsForm? Как создать DLL на С++, чтобы его можно было подключить к VBA?
Как правильно сохранить данные в таблицы, чтобы их сразу же можно было использовать? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога
Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
|
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога
Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|