| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C++ Builder > Не подключается dll созданная в VC++ |
| Автор: porex 19.8.2010, 12:19 | ||||
| Здравствуйте! Имеется dll, lib файл и заголовочник созданные в MS VC8. Необходимо подключить dll'ку к C++ Builder 2010. Пробовал подключать статически сначала оригинальный lib:
далее, начитавшись сообщений по форумам, сделал lib файл для Buildera implib'ом, результат тот же(( Статически подключать отпало желание. Пробую динамически:
GetLastError() возвращает 127 т.е. функция не найдена! Писать __import и __cdecl бесполезно. Уже не знаю как библиотекой можно справиться( |
| Автор: lamber 19.8.2010, 12:24 |
| implib'ом создается lib файл из dll а не конвертирует VC lib в Builder'вский. Попробуй может дело в этом |
| Автор: porex 19.8.2010, 12:25 | ||
Очепятка. Сделал lib файл для Buildera, но это не помогло |
| Автор: mrbrooks 19.8.2010, 12:31 |
| в таких темах надо уже петь фальцетом: "В поиск!!!" используем implib полученную *.lib подключаем через AddProject или типа того. |
| Автор: Dem_max 19.8.2010, 12:33 |
| для динамического импорта утилитой dependecy walker посмотри названия экспортируемых функций, а потом уже их пиши у себя в программе. для статической линковки нужно файл lib с помощью утилиты COFF2OMF (храниться в папке bin бормана) переконвертировать библиотеку из мелкософтовского формата в бормановский. |
| Автор: porex 19.8.2010, 12:34 | ||
Вы внимательней прочитайте сообщение! Там в первых же строках описан результат!!! |
| Автор: porex 19.8.2010, 12:36 | ||||
Названия функций брал из заголовочника. Сейчас попробую dependecy walker.
данная утилита делает файл размером в 512 байт почти со всеми нулями и что прикажете с ним делать? |
| Автор: lamber 19.8.2010, 12:37 |
| Щас попробовал создать либ файл из dll'ки пишет unknown file type может с dll что-то не так :? |
| Автор: porex 19.8.2010, 12:42 | ||||||||||
Сейчас сам удивился, пол часа назад создавалась. Поищу другую. Добавлено через 3 минуты и 15 секунд Действительно странно. Вот есть lib созданный несколько часов назад implimb'ом. Добавлено через 5 минут и 22 секунды
Вы прикалываетесь? Вот в первом посте написано!
Добавлено через 8 минут и 35 секунд
Все работает. В синтаксисе вызова сначала нужно писать файл .lib, а потом .dll;) |
| Автор: Dem_max 19.8.2010, 12:53 |
| да и еще можешь не париться со статической линковкой, иногда переконвертация или создания lib может не пройти. Юзай динамическую. |
| Автор: porex 19.8.2010, 13:11 | ||||||
Посмотрел этим Walker'ом, вот как выглядит функция:
Смутило несоответствие типов параметров. Переделал. Но результат не изменился. Нынешний вид вызова:
Добавлено через 14 минут и 11 секунд Может кто попробует прикрутить к своему проекту? |
| Автор: Dem_max 19.8.2010, 14:00 |
| Если ты внимательно смотрел dependecy walker исходную dll то там функция имеет название ?MJ2_append_Init@@YAHPBDPAPAX1PAH@Z Не надо делать Undecorate C++ Functions |
| Автор: porex 19.8.2010, 14:03 | ||
И как тогда получить на нее указатель? "_" спереди стоит. Добавлено через 3 минуты и 35 секунд Хм....думал так нельзя. Но с этим ?MJ2_append_Init@@YAHPBDPAPAX1PAH@Z названием получилось. Щас проверю полностью работоспособность. Спасибо! |
| Автор: Dem_max 19.8.2010, 14:08 | ||
не знаю как у тебя но у меня все работает
|
| Автор: porex 19.8.2010, 14:21 |
| У меня тоже все заработало! Спасибо огромное!!!! Добавлено через 2 минуты и 28 секунд Интересно, а почему именно так? Во всех описаниях написано, максимум нужно добавить "_" т.к происходит декорирование. |
| Автор: Dem_max 19.8.2010, 14:25 |
| в ж...пу описание, есть dependecy walker, он тебе скажет как правильно. |
| Автор: porex 19.8.2010, 14:31 |
| Понятно |
| Автор: xvr 20.8.2010, 14:31 |
| Тебе ОЧЕНЬ повезло. У меня был опыт подключения dll от VC к BCB - все слинковалось, но в runtime упало со страшной силой из за несоответствия библиотек - библиотеки MS c Borland'ом передрались из за общих имен функций и переменных |