link6816 link6817 link6818 link6819 link6820 link6821 link6822 link6823 link6824 link6825 link6826 link6827 link6828 link6829 link6830 link6831 link6832 link6833 link6834 link6835 link6836 link6837 link6838 link6839 link6840 link6841 link6842 link6843 link6844 link6845 link6846 link6847 link6848 link6849 link6850 link6851 link6852 link6853 link6854 link6855 link6856 link6857 link6858 link6859 link6860 link6861 link6862 link6863 link6864 link6865 link6866 link6867 link6868 link6869 link6870 link6871 link6872 link6873 link6874 link6875 link6876 link6877 link6878 link6879 link6880 link6881 link6882 link6883 link6884 link6885 link6886 link6887 link6888 link6889 link6890 link6891 link6892 link6893 link6894 link6895 link6896 link6897 link6898 link6899 link6900 link6901 link6902 link6903 link6904 link6905 link6906 link6907 link6908 link6909 link6910 link6911 link6912 link6913 link6914 link6915 link6916 link6917 link6918 link6919 link6920 link6921 link6922 link6923 link6924 link6925 link6926 link6927 link6928 link6929 link6930 link6931 link6932 link6933 link6934 link6935 link6936 link6937 link6938 link6939 link6940 link6941 link6942 link6943 link6944 link6945 link6946 link6947 link6948 link6949 link6950 link6951 link6952 link6953 link6954 link6955 link6956 link6957
C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Использование библиотеки
Monomah
Отправлено: 16.09.2004, 18:09


Не зарегистрирован







Понимаю, что вопрос ламерский, но всё же. Если такая проблема: есть библиотека Extern.dll, вместе с ней есть Extern.lib файл и файл заголовка Extern.h. Хочется использовать функции, которые там есть. Делаю так: добавляю lib файл к проекту "Project->Add to project". Но при сборке линкер выдаёт такое:

[Linker Error] 'C:\C++BUILDER\Extern.LIB' contains invalid OMF record, type 0x21 (possibly COFF)

что это такое и как с этим бороться? Пробовал использовать утилиту implib.exe, чтобы из dll получить новый lib , но она ругается, типа "unknown file type".... что делать? Помогите плииз...
AVC
Отправлено: 17.09.2004, 08:27


Ветеран

Группа: Модератор
Сообщений: 1583



Coff to Omf
Цитата из Д.Холингвэрт и др.
QUOTE

...
воспользоваться Coff2Omf.exe из комплекта поставки
Coff2Omf extern.lib extern.new
затем переименовать extern.new в extern.lib
....
Если эта методика не даст ожидаемого результата, выясните, как организовано экспортирование функций в dll, и присвойте функциям псевдонимы, воспринимаемые C++Builder. Для этого сначала с помощью утилиты Impdef.exe создайте файл определений (он имеет расширение .def), который позволит посмотреть имена всех экспортируемых DLL функций и их порядковые номера. Далее измените экспортируемые функции в .def файле так, чтобы функции в нем имели такой вид:

Было
EXPORTS
  _Add@8 = _Add @1

Стало
EXPORTS
  Add=_Add@8

Сохраните отредактированный .def файл и воспользуйтесь утилитой Implib.exe....
Implib Extern.lib Extern.def
Это файл должен "понравиться" C++Builder

(Ну как тут не вспомнить М.Задорнова с его знаменитым "Если не пойдет") smile.gif
Monomah
Отправлено: 17.09.2004, 11:07


Не зарегистрирован







AVC, спасибо большое!
Почему то ни один способ не подошёл, но получилось чуть чуть по другому:
def файл содержал описания такого типа:

EXPORTS
Func1 @7 ; Func1

сначала привёл его к типу:

EXPORTS
Func1=_Func1@8

но Билдер при сборке сказал, что нераспознанная внешняя функция Func1. Потом я просто создал def файл, не исправлял его — оставил всё как было, потом применил к нему утилиту implib и получившаяся библиотека прекрасно заработала smile.gif


Вернуться в Вопросы программирования в C++Builder