WWW.ИСХОДНИКИ.РУ cpp.sources.ru
java.sources.ru web.sources.ru soft.sources.ru
jdbc.sources.ru asp.sources.ru api.sources.ru

  Форум на исходниках
  C / C++ / Visual C++
  Загрузка VC DLL в BCBuilder-e

СПРОСИТЬ  ОТВЕТИТЬ
профайл | регистрация | faq

Автор Тема:   Загрузка VC DLL в BCBuilder-e
server_mouse опубликован 15-05-2001 15:24 MSK   Click Here to See the Profile for server_mouse   Click Here to Email server_mouse  
Народ, не понимаю...
Не получается подключить и использовать в билдере DLL-ку созданую на визуале (голый апи). То есть в проект она добавляется, вот только линковщик ругается: Unresolved external...
В том же VC всё как по маслу...

ЗЫ длл-ку не надо загружать динамически, нужно просто юзать...

OlegN опубликован 15-05-2001 15:48 MSK     Click Here to See the Profile for OlegN  Click Here to Email OlegN     
Необходимо объявить экспортируемые функции в .def файле и подключить этот файл к
VC проэкту Dll-ки, ну и перелинковать ее.
Пример .def файла

LIBRARY MyDll.dll

DESCRIPTION 'myDll'

EXPORTS
Func1 @1
Func2 @2

Посмотреть, как объявлены экспортируемые функции в dll модуле можно при помощи
утилиты Depends.exe (поставляется вместе с VC 6.0)

Flex Ferrum опубликован 15-05-2001 16:15 MSK     Click Here to See the Profile for Flex Ferrum  Click Here to Email Flex Ferrum     
Кроме этого, необходимо правильно объявить эти функции внутри кода, как на Builder'e, так и на VC.
На VC они должны объявляться так:

extern "C"
{
__declspec(dllexport) Function1;
__declspec(dllexport) Function2;
__declspec(dllexport) Function3;
}

На Builder'e так:
extern "C"
{
__import Function1;
__import Function2;
__import Function3;
}

В обоих примерах замнени Function... на соответсвующие необходимые объявления.

Можешь сделать круче:

В .h файле объявляешь макрос:
#if _MSC_VER > 1000
#ifdef DLL_EXPORTS
#define DLL_API __declspec(dllexport)
#else
#define DLL_API __declspec(dllimport)
#endif
#else
#define DLL_API __import
#endif

После чего там-же пишешь следующее:

extern "C"
{
DLL_API Function1;
DLL_API Function2;
DLL_API Function3;
}

И можешь вставлять этот файл как в проект на Builder'e, так и на VC. Единственно, что при сборке библиотеки необходимо в настройках проекта (закладка C++, поле Preprocessor Definitions) указать DLL_EXPORTS.

server_mouse опубликован 16-05-2001 12:17 MSK     Click Here to See the Profile for server_mouse  Click Here to Email server_mouse     
Всё! Подключили! Пасибочки за помощь. Просто при обзывании экспортируемых ф-ций в VC надо писать: _MyFunction...
А в BCB юзать просто как MyFunction. Ну и дурь! Кто это выдумал?

Встала другая проблемка. Ужас как не хочется таскать за собой длл-ку. Можно ли как-нибудь добавить к проекту ВСВ obj-файл скомпилёваный VС? Или как-то по другому подключить ф-ции из проги на VC...

Flex Ferrum опубликован 16-05-2001 12:33 MSK     Click Here to See the Profile for Flex Ferrum  Click Here to Email Flex Ferrum     
А вот этого, IMHO, уже нельзя. Формат объектников разный.
server_mouse опубликован 16-05-2001 12:56 MSK     Click Here to See the Profile for server_mouse  Click Here to Email server_mouse     
И что, больше никак нельзя? Можно например как-нибудь прилинковать данную конкретную длл статически?
Flex Ferrum опубликован 16-05-2001 13:17 MSK     Click Here to See the Profile for Flex Ferrum  Click Here to Email Flex Ferrum     
Ну если только перекомпилируешь исходники DLL под билдером.

СПРОСИТЬ  ОТВЕТИТЬ
Перейти:


E-mail | WWW.ИСХОДНИКИ.RU

Powered by: Ultimate Bulletin Board, Freeware Version 5.10a
Purchase our Licensed Version- which adds many more features!
© Infopop Corporation (formerly Madrona Park, Inc.), 1998 - 2000.