Слинковать Bulder Library с Visual Application
1750
6
Всем, привет!
Вопрос - как подшить библиотеку собранную в Builder к проекту, собираемому в Visual C++? Библиотека обычная си-шная. Можно конечно использовать COM, но тогда сильно много переделывать надо.
Вопрос - как подшить библиотеку собранную в Builder к проекту, собираемому в Visual C++? Библиотека обычная си-шная. Можно конечно использовать COM, но тогда сильно много переделывать надо.
А в чем проблема то? Собираешь DLL и вперед с песней..или я чего то не понимай??
А ты пробовал? У меня при компиляции проекта в 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);
Типа так:
Например есть библиотека с нужными мне функциями
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..я надеюсь имеешь в виду библиотеку иморта, а не статическую либу??!
З.Ы. Чуть не забыл..ты под lib..я надеюсь имеешь в виду библиотеку иморта, а не статическую либу??!
ТОП 5
1
2
3