![]() |
|
|
![]()
|
|
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: нет Всего: 98 |
Добрый день.
Подскажите, пожалуйста, как с помощью MinGV собрать .dll из файла, содержащего DllMain С уважением... -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| srd |
|
||||||||||
![]() Нереварин ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 951 Регистрация: 30.8.2003 Где: Владивосток Репутация: нет Всего: 49 |
Я попробовал следующим образом:
Исходный код самой DLL
Тестовая программка:
Команда для сборки DLL:
После чего появились test.dll и библиотека импорта libtest.a Сборка тестовой программки:
Если теперь запустить hello.exe, то можно увидеть следующий вывод
Т.е. DllMain вызывается без дополнительных телодвижений с нашей стороны. Узнать больше, видимо, можно здесь -------------------- Не смей читать мою подпись!!! |
||||||||||
|
|||||||||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: нет Всего: 98 |
он на это (на попытку собрать .exe) говорит stdio.h: No such file or directory.
еще, чтоли, заголовки куда-то копировать нужно? -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| _hunter |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: нет Всего: 98 |
а можно как-то имея make-файл сделать так, чтобы он .dll генерил?
я в секции
приписал -shared:
это нормально? -------------------- Tempora mutantur, et nos mutamur in illis... |
||||
|
|||||
| srd |
|
||||||
![]() Нереварин ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 951 Регистрация: 30.8.2003 Где: Владивосток Репутация: нет Всего: 49 |
Для ffmpeg если сам скрипт configure запустить с ключами --enable-shared --disable-static, то он сгенерирует makefile как раз для сборки DLL и соответствующий библиотеки импорта.
Кроме ключа -shared нужно ещё передать ключ линкеру для генерации библиотеки импорта:
Ключ -o $@ задаёт имя выходного файла ffmpeg_g$(EXESUF). Мне кажется, что переменная EXESUF имеет значение .exe. Т.е. у тебя сгенерируется DLL, но с расширением exe -------------------- Не смей читать мою подпись!!! |
||||||
|
|||||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: нет Всего: 98 |
если собирать после ./configure --enable-shared --disable-static получаю (от make)
а если мне не нужна библиотека импорта (.dll я буду LoadLibrary грузить) и расширение не критично -- можно так генерить? -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| srd |
|
|||
![]() Нереварин ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 951 Регистрация: 30.8.2003 Где: Владивосток Репутация: нет Всего: 49 |
Ну, я думаю, что можно. Но, наверное, лучше сначала посмотреть, где у тебя лежит файл libavutil.a, и если он есть, попробовать его скопировать в то место, где его увидит ld -------------------- Не смей читать мою подпись!!! |
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: нет Всего: 98 |
в том то и проблема, что нету...
в папке libavutil есть только libavutil.so.49 и libavutil.so.lnk -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| _hunter |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: нет Всего: 98 |
еще проблема:
экспортирую из .dll функцию Test:
при ее вызове в студии:
получаю Unhandled exception. а если ее сделать такой:
-- вызов проходит нормально... -------------------- Tempora mutantur, et nos mutamur in illis... |
||||||
|
|||||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: нет Всего: 98 |
еще добавление: вызов вообше любой функции RTL (даже strcpy) обламывается...
-------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| srd |
|
|||
![]() Нереварин ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 951 Регистрация: 30.8.2003 Где: Владивосток Репутация: нет Всего: 49 |
-------------------- Не смей читать мою подпись!!! |
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: нет Всего: 98 |
но собираются то .dll-ки/.exe-шники...
-------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| sekiro |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 14.4.2006 Репутация: нет Всего: нет |
Я бы посоветовал поставить dev-c++, чтобы не мучиться с make-файлами и командной строкой. А дальше все просто.
Далее в параметрах проекта добавляем дополнительный параметр компилятору: -DBUILDING_DLL=1 Компилируем и радуемся жизни... |
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: нет Всего: 98 |
у меня уже есть готовій проект с make-файлом.
этот dev-c++ его сможет собрать? щас провел эксперимент: создал в студии консольное приложение из которого экспортирую функцию:
при попытке ее вызвать получаю аналогичное UhE. но если в ствойствах проекта General->Configuration Type поставить Dynamic Library (вместо Application) -- функция вызывается нормально. значит опции shared недостаточно. -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: нет Всего: 98 |
как бы собралось -- перенес -shared непосредственно к опциям ffmpeg
теперь с отладкой проблемы... -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | GNU toolchain | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |