создание DLL в Visual Studio 2005 - PullRequest
2 голосов
/ 10 июля 2009

Я занимаюсь разработкой библиотеки C ++, которую я хочу передать своей команде. В библиотеке есть только один класс с кучей методов.

Итак, я разработал файл определения класса (X.cpp) и соответствующий файл объявления класса (X.h).

Вот мои вопросы -

  1. В Visual Studio 2005 самый простой способ построить эту библиотеку как DLL, чтобы я получил следующие файлы: X.lib: который я могу передать своей команде, чтобы они могли ссылаться на мою библиотеку X.dll: который я могу передать своей команде во время выполнения

  2. Вместо DLL, я должен идти по пути статической библиотеки ?? Если да, то как мне это сделать в Visual Studio 2005 и даст ли мне файл X.lib, который я могу передать своей команде?

Любые объяснения или ссылки приветствуются.

Большое спасибо.

Ответы [ 4 ]

2 голосов
/ 10 июля 2009

Самый простой способ создать DLL - это New-> Project-> Win32 Console Application. Затем в диалоговом окне выберите DLL и выберите «Экспорт символов». Это позволит синтезировать DLL с файлами .h и .cpp, которые продемонстрируют, как экспортировать ваши классы. Вы можете избавиться от этого .h / .cpp, но сначала импортируйте ваш класс, добавив соответствующие операторы #ifndef. Теперь что касается DLL и статической библиотеки, если она представляет собой один небольшой класс, который не меняется особенно часто, вам может быть выгоднее использовать статическую библиотеку, она простая, лаконичная, она не добавляет другой зависимости, которую необходимо отправить с вашим продуктом. DLL полезна, если код в файле .cpp часто меняется (т. Е. Реализации функций), потому что вы можете просто поменять местами новую DLL.

1 голос
/ 10 июля 2009

Я думаю, что в большинстве случаев DLL - лучший выбор, чем статическая библиотека, потому что вашей команде не придется перекомпилировать свой код при распространении новой версии вашей библиотеки.

1 голос
/ 10 июля 2009

Из вашего описания похоже, что у вас уже есть проект Visual C ++ (поправьте меня, если я ошибаюсь). Если это так, когда вы заходите в свойства проекта, в разделе «Общие» вы можете найти «Тип конфигурации» - при необходимости переключите его на «Статическая библиотека» или «Динамическая библиотека».

Если вы выберете «Статическая библиотека», вы получите файл .lib, который можно сразу использовать.

Если вы выберете «Динамическая библиотека» и экспортируете какие-либо функции из вашей DLL (например, пометив их __declspec(dllexport)), экспорт .lib будет сгенерирован автоматически.

Трудно сказать, какой вариант предпочтительнее, не зная специфики того, что вы делаете. В общем, я бы рекомендовал использовать по умолчанию статические библиотеки, потому что это обычно достаточно хорошо, и при работе с DLL возникает больше ловушек (особенно те, которые экспортируют символы C ++).

0 голосов
/ 10 июля 2009

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

НТН

...