Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.03.2015, 15:42   #1
Chicho
 
Регистрация: 13.03.2015
Сообщений: 7
Восклицание [Linker error] Unresolved internal...

Доброго времени суток! Проблема в следующем. Файлы DLL и LIB разработаны в Visual Studio. Мне нужно использовать эту библиотеку в C++ Builder 5. Добавил LIB в проект. При компиляции возникает ошибка:

[Linker error] Mylib.lib contains invalid OEM record, type 0x21 (possibly COFF)

С помощью implib я создал собственный LIB. Теперь выдаётся ошибка:

[Linker error] Unresolved internal... (ну и куча функций).

Как можно корректно подключить третьестороннюю библиотеку?
P.S. Интересный факт. Оригинальный LIB-файл был 109 КБ, созданный мной файл 63КБ.
Проверял с помощью IMPDEF'а - все ссылки указаны.
Chicho вне форума Ответить с цитированием
Старый 13.03.2015, 20:57   #2
Krok27
Форумчанин
 
Аватар для Krok27
 
Регистрация: 08.07.2010
Сообщений: 505
По умолчанию

Непростая это тема. Скорее всего не получиться таким образом.
Лучше попробвать сделать либу импорта:
IMPLIB mydll.lib mydll.dll (надо попробовать с разными ключами), если статическая линковка проканает, то положить dll-ку к файлу с проектом. Есть еще такая утилита COFF2OMF.EXE.
Если не получится сделать либу импорта, тогда только динамическая линковка: LoadLibrary и GetProcAddress, много кода, но работает на 100%.
Знающий не говорит, говорящий не знает (С) Лао Цзы
Krok27 вне форума Ответить с цитированием
Старый 16.03.2015, 15:16   #3
Chicho
 
Регистрация: 13.03.2015
Сообщений: 7
По умолчанию

Спасибо, Krok27! Утилита COFF2OMF.EXE помогла. Теперь проблема в другом. Прога отлавливает определенные системные события. Их экзешник это делает, а откомпилированный мной - нет. Т.е. проходит успешная инициализация и тишина: не событий. Запускаю их экзешник: событий полно. Я счас пытаюсь у разработчика выяснить, в чём проблема, но хотелось бы самому понять, чего ещё не хватает. Библиотека подключена, заголовочные файлы тоже все на месте. Что ещё надо?
Chicho вне форума Ответить с цитированием
Старый 16.03.2015, 21:03   #4
Krok27
Форумчанин
 
Аватар для Krok27
 
Регистрация: 08.07.2010
Сообщений: 505
По умолчанию

Тогда библиотеку в студию, на препарирование.
Знающий не говорит, говорящий не знает (С) Лао Цзы
Krok27 вне форума Ответить с цитированием
Старый 17.03.2015, 12:43   #5
Chicho
 
Регистрация: 13.03.2015
Сообщений: 7
По умолчанию

Цитата:
Сообщение от Krok27 Посмотреть сообщение
Тогда библиотеку в студию, на препарирование.
А куда выслать можно?
Chicho вне форума Ответить с цитированием
Старый 17.03.2015, 12:55   #6
Krok27
Форумчанин
 
Аватар для Krok27
 
Регистрация: 08.07.2010
Сообщений: 505
По умолчанию

Тут можно вставить, перейти в расширенный режим надо
И текст программы тоже не помешает
Знающий не говорит, говорящий не знает (С) Лао Цзы

Последний раз редактировалось Krok27; 17.03.2015 в 13:01.
Krok27 вне форума Ответить с цитированием
Старый 17.03.2015, 13:03   #7
Chicho
 
Регистрация: 13.03.2015
Сообщений: 7
По умолчанию

Цитата:
Сообщение от Krok27 Посмотреть сообщение
Тут можно вставить, перейти в расширенный режим надо
Прикрепил. Две библиотечки: COFF и OMF.
Вложения
Тип файла: rar Lib.rar (18.9 Кб, 11 просмотров)
Chicho вне форума Ответить с цитированием
Старый 17.03.2015, 16:43   #8
Krok27
Форумчанин
 
Аватар для Krok27
 
Регистрация: 08.07.2010
Сообщений: 505
По умолчанию

Эти меньше всего интересуют, DLL надо.
Знающий не говорит, говорящий не знает (С) Лао Цзы
Krok27 вне форума Ответить с цитированием
Старый 17.03.2015, 17:16   #9
Chicho
 
Регистрация: 13.03.2015
Сообщений: 7
По умолчанию

Цитата:
Сообщение от Krok27 Посмотреть сообщение
Эти меньше всего интересуют, DLL надо.
Отправил в архиве из двух частей.
Вложения
Тип файла: rar blpapi3_32.part1.rar (488.3 Кб, 9 просмотров)
Тип файла: rar blpapi3_32.part2.rar (297.9 Кб, 10 просмотров)
Chicho вне форума Ответить с цитированием
Старый 17.03.2015, 21:36   #10
Krok27
Форумчанин
 
Аватар для Krok27
 
Регистрация: 08.07.2010
Сообщений: 505
По умолчанию

Значитцо так:
1. Смотрим таблицу импорта DLL:
TDUMP -ee -m blpapi3_32.dll > blpapi3_32.dll.LST
2. Генерим либу импорта для BCB
IMPLIB.exe blpapi3_32.lib blpapi3_32.dll
3. Смотрим, что импортирует наша сгенеренная либа:
TLIB blpapi3_32.lib, blpapi3_32.lst
Если не будет работать, значит тебе не повезло и придется динамически линковаться.

Для чего эта блумберговская приблуда?

Цитата:
P.S. Интересный факт. Оригинальный LIB-файл был 109 КБ, созданный мной файл 63КБ.
Проверял с помощью IMPDEF'а - все ссылки указаны.
Потому что у тебя только импорт, тока названия.
В твоей сгенеренной либе названия функция начинаются с нижнего подчеркивания, тогда
и вызывай их, предваряя их нижним подчеркиванием.

Вот тут про использование таких библиотек
Вложения
Тип файла: rar blpapi3_32.rar (17.3 Кб, 7 просмотров)
Знающий не говорит, говорящий не знает (С) Лао Цзы

Последний раз редактировалось Krok27; 18.03.2015 в 12:06.
Krok27 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Internal error RaulGain Общие вопросы Delphi 1 02.10.2013 04:42
[ILINK32 Error] Error: Unresolved external... Equilibrium Keeper Общие вопросы C/C++ 3 12.02.2010 18:12
LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main Debug/main.exe : fatal error LNK11 prefak Win Api 0 19.04.2009 16:51