Создание C ++ DLL с помощью Visual Studio - PullRequest
2 голосов
/ 10 марта 2009

Я создаю простой проект C ++ DLL с использованием Visual Studio 2008 Express Edition. У меня есть несколько классов внутри пространства имен, и несколько нестатических функций и конструкторов внутри него объявлены с __declspec(dllexport). Все эти функции реализованы.

У меня также есть функция extern "C" BOOL APIENTRY DllMain, которая просто возвращает TRUE.

Когда я нажимаю Debug (или Release), он успешно собирается без ошибок и предупреждений. Выходная папка («Debug /» или «Release /») получает файлы, такие как «BuildLog.htm», один файл «.obj» на исходный файл, «vc90.pdb», «vc90.idb», «[DLLNAME». ] .dll.embed.manifest "," [DLLNAME] .dll.embed.manifest.res "," [DLLNAME] .dll.intermediate.manifest ", но ... не самой DLL.

Это первый раз, когда я пытаюсь скомпилировать этот проект (поэтому я никогда не скомпилировал его до этого), и у меня мало опыта работы с C ++ / DLL, хотя я знаю автономный C ++ и создавал общие объекты Linux C раньше.

Что я делаю не так? Есть ли какой-то конкретный файл, который мне не хватает?

Ответы [ 2 ]

8 голосов
/ 10 марта 2009

Я бы посмотрел чуть выше в структуре каталогов (той, в которой находится решение) и посмотрел, есть ли там ваши папки Debug / Release (с DLL).

Я думаю, по умолчанию помещаются фактические библиотеки DLL в папки в каталоге решения, а не в каталог проекта (я думаю, что вы хотите, чтобы все библиотеки DLL, которые вы создаете, находились в одном месте)

1 голос
/ 10 марта 2009

Щелкните правой кнопкой мыши <ProjectsName> в Solution Explorer View, выберите Properties, перейдите на вкладку Configuration Properties > General и проверьте поле Output Directory. Путь может состоять из некоторых макросов, таких как $(SolutionDir)$(ConfigurationName) и т. Д. Нажмите на него, выберите Edit, а затем, когда появится всплывающее окно, выберите Macros, чтобы увидеть, что они на самом деле означают, например какой каталог SolutionDir отображается на. Оттуда вы можете вывести путь к выходной DLL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...