Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Проблема C подключением Dll
Форум программистов > Системное программирование > C, С++ и С Builder > Borland C++ Builder & Kylix
IDeonisI
Всем привет! Подскажите как подключить не явно библиотеку Dll в среде Borland C++ 5 ? В менеджере проектов я подключил файл lib. Но функции этой библиотеки приложение так и не может увидеть. Хотя с явным подключением проблем нет.
shisik
А файл h подключил?
shisik
Вот рабочий пример использования DLL. Пример простой, взят из учебника.

Возможно, ты указал #define BUILD_DLL(APP) после #include "MyLib.h" (имена могут отличаться, я привёл имена из примера).
IDeonisI
Файла h как токового нет. Есть исходники библиотеки с кучей файлов h. Я в приложении просто для примера описал прототип только одной функции. Или необходимо описывать все функции библиотеки?
shisik
Все функции описывать не обязательно, описать достаточно только те, которые экспортируются из DLL. Важно, чтоб в DLL фунакция была описана как __declspec(dllexport), а в EXE __declspec(dllimport).
brink
Добрый день.

У меня проблема следуещего характера. Есть Dll, при вызове функции из которой создается DataModule (вот так: DataModule = new TDataModule((TComponent *)NULL) ), на котором есть компоненты:
TDCOMConnection;
TClientDataSet;
TDataSource.
По идее они должны создатся автоматом?
После создания модуля вызывается функция которая запускает TDCOMConnection но при попытке доступа к нему выдается ошибка: "Не был произведен вызов CoInitialize".
Поготите разобраться, в чем же ошибка?
brink
Проблему нашел, был немного невнимателен.
А дело в следующем. Когда ты создаешь обычное приложение-экзешник с формами, то при использовании COM-объектов, метод CoInitialize автоматически вызывается в Application.Initialize. Ну, а в DLL Application.Initialize не вызывается по-умолчанию и поэтому CoInitialize надо вызывать явно. Тоже самое надо проделать в отдельных неглавных потоках обычного приложения, которые используют COM или OLE механизмы. Если CoInitialize вызывается явно, то при завершении работы потока или DLL надо также вызывать CoUninitialize.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Русская версия IP.Board © 2001-2008 IPS, Inc.