Погода: 2 °C
23.04−3...0пасмурно, без осадков
24.04−5...2пасмурно, без осадков
  • Всем, привет!
    Вопрос - как подшить библиотеку собранную в 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);

  • Ессно...формат библиотек иморта у VC++ и у Buildera разный....если у Builder есть тулза, implib кажется, которая по dll генерит библиотеку иморта, ессно в формате BCB, то у VC++ по краней мере 6.0 версии аналогичного инстурмента нет, если я не ошибаюсь...так что через GetProcAdress...
    З.Ы. Чуть не забыл..ты под lib..я надеюсь имеешь в виду библиотеку иморта, а не статическую либу??!

  • Чето у меня буковка "п" в слове "импорт" малость не пропечаталсь :улыб:

  • В ответ на: Нужно использовать динамическую линковку.
    Ну здесь под словом "динамическая" имеется в виду неявная линовка (imlpicit linkage )

Записей на странице:

Перейти в форум

Модератор: