Проблема C подключением Dll

Тема в разделе "Borland C++ Builder & Kylix", создана пользователем IDeonisI, 5 май 2008.

Статус темы:
Закрыта.
  1. IDeonisI

    IDeonisI Гость

    Всем привет! Подскажите как подключить не явно библиотеку Dll в среде Borland C++ 5 ? В менеджере проектов я подключил файл lib. Но функции этой библиотеки приложение так и не может увидеть. Хотя с явным подключением проблем нет.
     
  2. shisik

    shisik Well-Known Member

    Регистрация:
    26 авг 2007
    Сообщения:
    154
    Симпатии:
    0
    А файл h подключил?
     
  3. shisik

    shisik Well-Known Member

    Регистрация:
    26 авг 2007
    Сообщения:
    154
    Симпатии:
    0
    Вот рабочий пример использования DLL. Пример простой, взят из учебника.

    Возможно, ты указал #define BUILD_DLL(APP) после #include "MyLib.h" (имена могут отличаться, я привёл имена из примера).
     

    Вложения:

    • UseDLL.rar
      Размер файла:
      369,2 КБ
      Просмотров:
      30
  4. IDeonisI

    IDeonisI Гость

    Файла h как токового нет. Есть исходники библиотеки с кучей файлов h. Я в приложении просто для примера описал прототип только одной функции. Или необходимо описывать все функции библиотеки?
     
  5. shisik

    shisik Well-Known Member

    Регистрация:
    26 авг 2007
    Сообщения:
    154
    Симпатии:
    0
    Все функции описывать не обязательно, описать достаточно только те, которые экспортируются из DLL. Важно, чтоб в DLL фунакция была описана как __declspec(dllexport), а в EXE __declspec(dllimport).
     
  6. brink

    brink Гость

    Добрый день.

    У меня проблема следуещего характера. Есть Dll, при вызове функции из которой создается DataModule (вот так: DataModule = new TDataModule((TComponent *)NULL) ), на котором есть компоненты:
    TDCOMConnection;
    TClientDataSet;
    TDataSource.
    По идее они должны создатся автоматом?
    После создания модуля вызывается функция которая запускает TDCOMConnection но при попытке доступа к нему выдается ошибка: "Не был произведен вызов CoInitialize".
    Поготите разобраться, в чем же ошибка?
     
  7. brink

    brink Гость

    Проблему нашел, был немного невнимателен.
    А дело в следующем. Когда ты создаешь обычное приложение-экзешник с формами, то при использовании COM-объектов, метод CoInitialize автоматически вызывается в Application.Initialize. Ну, а в DLL Application.Initialize не вызывается по-умолчанию и поэтому CoInitialize надо вызывать явно. Тоже самое надо проделать в отдельных неглавных потоках обычного приложения, которые используют COM или OLE механизмы. Если CoInitialize вызывается явно, то при завершении работы потока или DLL надо также вызывать CoUninitialize.
     
Загрузка...
Похожие Темы - Проблема подключением Dll
  1. andrey webware
    Ответов:
    8
    Просмотров:
    1.228
  2. 22091999
    Ответов:
    0
    Просмотров:
    934
  3. AgniXRudra
    Ответов:
    2
    Просмотров:
    50
  4. Zloikaktus
    Ответов:
    0
    Просмотров:
    28
  5. c0de3r
    Ответов:
    5
    Просмотров:
    153
Статус темы:
Закрыта.

Поделиться этой страницей