2013-11-29 2 views
2

Это что-то новое для меня, и вопрос, вероятно, связан скорее с IDE Delphi, чем с кодом.Как разработать DLL и два приложения, которые обращаются к нему

Я хочу разработать DLL и два приложения, которые будут использовать его.

Я сделал очень простой DLL и быстрое фиктивное приложение, чтобы проверить его. Все идет нормально. НО, все источники были в одном каталоге.

Я чувствую, что я, вероятно, должен иметь групповой проект, содержащий три проекта (DLL + 2 приложения).

Но как я могу заставить приложения использовать мою DLL на этапе разработки?

Я не хочу копировать его в системный каталог Windows, пока я нахожусь в его разработке, но когда я добавляю его каталог в путь поиска приложения, он не найден.

Как настроить проекты приложений для использования библиотеки DLL в процессе разработки?


[Обновить] Ничего себе, мой самый быстрый когда-либо проголосовали. Одна минута! И, как обычно, даже не комментарий, чтобы сказать, как я обидел, кроме просьбы о помощи.

У меня есть googled, и я прочитал справку. Но я не вижу, как это сделать, поэтому я прошу помощи.

+1

По какой-либо причине вы не можете просто добавить его в [путь поиска] (http: // msdn.microsoft.com/en-us/library/vstudio/7d83bc18.aspx)? –

+1

Для жесткого кодирования вы можете написать '{$ IFDEF DEBUG} SetDllDirectory ('C: \ DirectoryWithDLL'); {$ ENDIF}' в ваших приложениях где-то до загрузки DLL. Но я лично не сделал бы этого. – TLama

+0

@TLama Недостатком этого является то, что он заставляет вас использовать связь во время выполнения, что, как правило, менее удобно. –

ответ

5

Предпочтительный способ включения приложения для просмотра DLL заключается в том, чтобы DLL располагалась в том же каталоге, что и исполняемый файл хоста.

Обычно я делаю это, имея группу проектов с исполняемым файлом и DLL. Убедитесь, что все проекты выводят их исполняемые файлы в один и тот же каталог. Если файлы .dpr и .dproj находятся в одном каталоге, а используется выходной каталог по умолчанию .\$(Platform)\$(Config), тогда все будет хорошо. Все исполняемые файлы попадают в один и тот же каталог, и загрузчик их найдет.

Действовать таким образом имеет ряд преимуществ:

  1. Нет необходимости в каком-либо после построения действия для копирования файлов вокруг.
  2. Отладка работает хорошо. Вы можете входить и выходить из библиотеки DLL и проходить через источник.
  3. Вы можете перестроить все исполняемые файлы за один раз, используя Project | Компилировать все проекты.

В сторону. Вы сказали:

Я не хочу копировать его в системный каталог Windows, пока я нахожусь в процессе его разработки.

Ну, пожалуйста, никогда не копируйте его в системный каталог. Этот каталог является приватным, он принадлежит системе. Вы не должны размещать файлы там.

Когда вы приступаете к развертыванию приложения на других компьютерах, вы должны предпочесть возможность размещения исполняемых файлов и библиотек DLL в одном каталоге. Это самый простой способ развертывания и самый безопасный и обслуживаемый. Это метод, который позволяет избежать аддона DLL.

+0

+1 и ответ. Большое спасибо, как всегда, Дэвид. Таким образом, у меня могут быть свои отдельные проекты и отдельные исходные каталоги, и просто поместите вывод (.EXEs и .DLL) в один каталог, и все в порядке. И, да, я тоже с вами согласен с развертыванием. – Mawg

+1

Это очень плохой совет. Что делать, если DLL должна быть разделена между несколькими приложениями (первоначальное намерение OP)? Что такое эти приложения ** не ** взаимосвязаны и не должны находиться в одном каталоге (как вы защищаете)? –

+2

@FreeConsulting Это известно как DLL-ад. Это современный способ. Всегда есть WinSxS. Там было весело. Или связь времени выполнения. И так далее. –