Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > 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
Цитата(Schumi @ 11.4.2006, 11:53 Найти цитируемый пост)
так она не хотела линковать...

вот прямо так и говорила -- "не хочу линковаться"?
так просить лучше нужно было. может уютную обстановку создать нужно было. понятно что при всех она стеснялась...

Автор: 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
Жаль.
Может кто-нибудь всё же подскажет?! smile


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
Цитата

Только DLL & Lib собраны в IDE под Microsoft.

"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, СПАСИБО! smile 
Попытаюсь... 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)