| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C++ Builder > Lib из VС в С++Builder |
| Автор: BearTime 10.4.2006, 23:17 |
| Подскажите, пожалйста! Есть Dll & Lib для неё, собранные на VC. Что необходимо сделать чтобы не грузить динамически Dll? |
| Автор: _hunter 11.4.2006, 10:37 |
| добавить .lib к проекту -- Project->Add to Project |
| Автор: Schumi 11.4.2006, 11:53 |
| Кстати, такое как - то пробовал, так она не хотела линковать... |
| Автор: _hunter 11.4.2006, 12:06 |
| вот прямо так и говорила -- "не хочу линковаться"? так просить лучше нужно было. может уютную обстановку создать нужно было. понятно что при всех она стеснялась... |
| Автор: BearTime 11.4.2006, 20:41 |
| Среда выдаёт следующее сообщение: "Build [Linker Error] 'C:\PROGRAM FILES\BORLAND\CBUILDER6\COMMON\GLUT32.LIB' contains invalid OMF record, type 0x21 (possibly COFF) " Наличие COFF подсказало, что Dll & Lib от среды программирования близкой к Microsoft. Вопрос остаётся тем же. Как конвертнуть Lib чтобы можно включить в проект Dll статически? |
| Автор: VectorMan 11.4.2006, 21:29 |
| coff2omf.exe должна быть в папке bin билдера. её и используй |
| Автор: BearTime 11.4.2006, 23:51 |
| coff2omf.exe конечно есть. Но Lib после неё выходит какой то облегчённый. Даже через чур. Может опции не те. -lib:ms |
| Автор: VectorMan 12.4.2006, 05:59 |
| coff2omf конвертит не какие попало библиотеки а только библиотеки импорта |
| Автор: BearTime 12.4.2006, 20:32 |
| Не отрицаю, что библиотеки импорта. Но, как преобразовать библиотеку из формата COFF в OMF? |
| Автор: _hunter 13.4.2006, 10:32 |
| если coff2omf не помог -- никак |
| Автор: BearTime 14.4.2006, 21:40 |
| Жаль. Может кто-нибудь всё же подскажет?! Eppur si muove! |
| Автор: Mikhail88 17.4.2006, 08:15 |
| 1. Посмотри http://www.rsdn.ru/article/devtools/bcbdll.xml "Создание в среде Borland C++ Builder dll, совместимой с Visual C++" 2. Вариант: а) Создай библиотеку импорта <имя_libBC>.lib из dll созданной в VC (<имя_dllVC>.dll) командой implib.exe -a <имя_libBC> <имя_dllVC>.dll б) Добавь полученную библиотеку импорта <имя_libBC>.lib в свой проект. в) Заголовок импортируемой в C++Builder функции (функций) в твоём проекте обязательно должен быть объявлен как extern "C" и __declspec(dllimport), например: extern "C" void __declspec(dllimport) func1(int param1); |
| Автор: BearTime 19.4.2006, 22:10 |
| Спасибо, Mikhail88! Только DLL & Lib собраны в IDE под Microsoft. |
| Автор: Mikhail88 20.4.2006, 09:12 | ||
"Lib собранный в IDE под Microsoft" - иметь НЕ ОБЯЗАТЕЛЬНО! -------- Вариант создания DLL в проекте на VC++ ("DLL собранной в IDE под Microsoft"): а) Обязательно в заголовке экспортируемых функций: __declspec(dllexport) б) Чтобы имена экспортируемых функций в DLL были "как есть", а не ?func1@PPR@@QAEXIIAAI0I@Z присоединить к проекту def - файл с описанием экспортируемых функций. Пример: LIBRARY "dllVC.dll" DESCRIPTION 'Windows Dynamic Link Library' EXPORTS func1 func2 func3 -------- Посмотреть содержимое dll созданной в VC <имя_dllVC>.dll можно, например, в Total Commander. Посмотреть содержимое созданной в результате импорта библиотеки <имя_libBC>.lib можно утилитой tdump.exe. Например: tdump.exe <имя_libBC>.lib > tdump.txt Фрагмент tdump.txt: 000D40 THEADR _func1 000D5D COMENT Purge: Yes, List: Yes, Class: 160 (0A0h), SubClass: 1 (01h) Dynamic link import (IMPDEF) Imported by: name Internal Name: _func1 Module Name: dllVC.dll Imported name: func1 000DA5 MODEND Работаю в группе разработчиков, где проекты ведутся на VC++ 6.0, C++Builder 6 и Delphi. Взаимный обмен библиотеками на уровне статически компонуемых DLL. Никаких проблем. |
| Автор: BearTime 20.4.2006, 22:54 |
| Mikhail88, СПАСИБО! Попытаюсь... |