Слинковать Bulder Library с Visual Application
1678
6
Всем, привет!
Вопрос - как подшить библиотеку собранную в Builder к проекту, собираемому в Visual C++? Библиотека обычная си-шная. Можно конечно использовать COM, но тогда сильно много переделывать надо.
Ламер
А в чем проблема то? Собираешь DLL и вперед с песней..или я чего то не понимай??
xray
А ты пробовал? У меня при компиляции проекта в Visual 6.0, в котором подшит lib, собранный в Builder 6.0, выдаётся ошибка, что файл библиотеки испорчен.
Ламер
Нужно использовать динамическую линковку.

Типа так:
Например есть библиотека с нужными мне функциями
int Get();
void Set( int );
Причем библиотека Сшная, если С++, то имена функций будут дополнены "манглированием", если не указать "extern С"

typedef int (*PGETPROC)(void);
typedef void (*PSETPROC)(int);

int (*Get) (void);
void (*Set) (int);

HANDLE hl = LoadLibrary("sr.dll");
if(!hl) ...
//не удалось загрузить библиотеку


Get = (PGETPROC)GetProcAddress(hl,"_Get");
Set = (PSETPROC)GetProcAddress(hl,"_Set");

if( !Get || !Set ) ...
//нету таких функций;
...
//используем функции как обычно
Set(Code);
int rnd = Get();
...
//освобождаем библиотеку
FreeLibrary(hl);
Ессно...формат библиотек иморта у VC++ и у Buildera разный....если у Builder есть тулза, implib кажется, которая по dll генерит библиотеку иморта, ессно в формате BCB, то у VC++ по краней мере 6.0 версии аналогичного инстурмента нет, если я не ошибаюсь...так что через GetProcAdress...
З.Ы. Чуть не забыл..ты под lib..я надеюсь имеешь в виду библиотеку иморта, а не статическую либу??!
xray
Чето у меня буковка "п" в слове "импорт" малость не пропечаталсь :улыб:
Тайконафт
Нужно использовать динамическую линковку.
Ну здесь под словом "динамическая" имеется в виду неявная линовка (imlpicit linkage )