Как сделать dll файл visual studio
Как создать dll в Visual Studio
DLL (Dynamic Link Library) – динамически подключаемая библиотека функций. Для библиотек DLL предполагается многократное использование различными программами. Поговорим о том, как создать библиотеку DLL в Visual Studio, используя языки программирования C и C#.
Создание dll на языке Си
Создаем в Visual Studio новый проект – консольное приложение.
В запустившемся “Мастере приложений Win32″ жмем кнопку “Далее”. В следующем окне выбираем тип приложения: “Библиотека DLL”; также ставим галочку напротив параметра “Пустой проект”. Жмем кнопку “Готово”.
Теперь необходимо создать два файла исходного кода: “main.cpp” и “main.def”. Для этого в “обозревателе решений” нажмем правой кнопкой мыши на папку “Файлы исходного кода”, далее – “Добавить” – “Создать элемент”.
В появившемся окне “Добавление нового элемента” во вкладке “Код” представлены типы файлов, которые нам необходимы. Создадим “main.cpp” и “main.def”.
В итоге обозреватель решений будет выглядеть вот так:
Перейдем к файлу “main.cpp”. Для примера, напишем две функции add и sub, выполняющих сложение и вычитание соответственно для двух целых чисел.
int add(int a, int b) { return a + b; } int sub(int a, int b) { return a - b; }
int add(int a, int b) { return a + b; }
int sub(int a, int b) { return a - b; } |
Перед каждой функцией необходимо добавить модификатор __declspec(dllexport) (два нижних подчеркивания). Этот модификатор разрешает экспорт функции из библиотеки DLL для ее использования в других приложениях. В итоге получим такой код:
__declspec(dllexport) int add(int a, int b) { return a + b; } __declspec(dllexport) int sub(int a, int b) { return a - b; }
__declspec(dllexport) int add(int a, int b) { return a + b; }
__declspec(dllexport) int sub(int a, int b) { return a - b; } |
Теперь перейдем к файлу “main.def”. В нем необходимо указать: название библиотеки DLL, ключевое слово EXPORTS, а после него названия функций, экспорт которых необходимо разрешить. В нашем случае, получится вот так:
LIBRARY "dll_vscode" EXPORTS add sub
LIBRARY "dll_vscode" EXPORTS add sub |
Осталось построить решение. Для этого во вкладке “ПОСТРОЕНИЕ” нажмем кнопку “Построить решение” (Ctrl+Shift+B).
В итоге, в папке с проектом будет создан файл DLLvscode.dll.
На этом создание DLL-файла завершено.
Если вы хотите скачать исходник проекта в Visual Studio, то нажмите на кнопку ниже:
Скачать исходник на Си
Создание dll на языке C#
В языке программирования C#, в отличие от языка C, при создании dll-файлов, не нужно указывать модификатор __declspec(dllexport). И в наличии файла “main.def” также нет необходимости.
Создадим в Visual Studio новый проект на языке C#: “Библиотеку классов”.
На основе функций add и sub, описанных выше, создадим в классе vscode соответствующие методы. Пространство имен указывать не нужно.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; public class vscode { public int add(int a, int b) { return a + b; } public int sub(int a, int b) { return a - b; } }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;
public class vscode { public int add(int a, int b) { return a + b; }
public int sub(int a, int b) { return a - b; } } |
Построим решение проекта (Ctrl+Shift+B). В папке Debug будет лежать созданный dll-файл.
Скачать исходник проекта можно ниже:
Скачать исходник C#
Как создать dll в Visual Studio
4.44 (88.75%) 16 votes
Поделиться в соц. сетях:
Создание и использование динамических библиотек .dll в visual studio.
Здорова господа!!!
Мы рассмотрим такой вид подключаемых библиотек таких как .dll это типо динамические библиотеки, если код из статических либ добавлялся в сам exe файл и после компиляции программы программа работала без этой библиотеки, то .dll нужно что бы был рядом с исполняемым файлом. Я сам недавно с ними познакомился и только знаю как их создавать и подключать. Считается вроде как эти либы типо как то экономят оперативную помять компьютера ну что то вроде этого, я читал так и не понял, ну это в принципе не сильно важно для новичков, а важно это как их создавать и как использовать.Ну ладно начнем потихоньку.
1. Создание библиотеки .dll
Открываем файл -> создать -> проект
Открывается окно создать проект, выбираем консольное приложение win32, вводим название проекта я ввел MyNewDll и выбираем где будет сохранен проект и нажимаем кнопку Ок и мы попадаем в мастер приложений
Нажимаем Далее и открывается окно в котором выбираем «библиотека DLL» и ставим галочку «пустой проект»
Нажимаем готово, все проект для создания динамических библиотек создан. Дальше создаем заголовочный файл function.h в котором в самом начала файла прописываем следующий код это препроцесорные директивы
//function.h #ifdef MATHFUNCSDLL_EXPORTS #define MATHFUNCSDLL_API __declspec(dllexport) #else #define MATHFUNCSDLL_API __declspec(dllimport) #endif |
Без этого кода возможно не правильно будет создаваться, я не экспериментировал не знаю, это я прочитал в МСДН, а поэтому добавляйте обязательно, ну и дальше добавляем функции которые будут импортироваться из файла.
#ifndef FUNCTION_H #define FUNCTION_H
MATHFUNCSDLL_API void func_hellow(); MATHFUNCSDLL_API void func_privet();
#endif |
Ну и сам файл function.cpp добавляем в проект
#include <iostream> using std::cout; using std::endl;
#include "function.h";
void func_hellow() { cout <<"Hellow world gacpada"<<endl; }
void func_privet() { cout <<"privet eb tu bl9 mazafaka bich"<<endl; } |
Ну и все дальше нажимаем Shift+Alt+F7 и у нас создается .dll в папке дебаг или релиз смотря что вы выбрали, там будет несколько файлов, но нам нужны два файла один с расширением lib — это библиотека импорта, не путайте со статической библиотекой и с расширением .dll и сам заголовочный файл, но не тот что мы создали для проекта .dll а реальный от этот
#ifndef FUNCTION_H #define FUNCTION_H
void func_hellow(); void func_privet();
#endif |
Я так думаю нужно сказать, как будет создаваться заголовочный файл для класса, я лучше приведу просто какой нить левый пример с кодом для класса.
function.h:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
#ifdef MATHFUNCSDLL_EXPORTS #define MATHFUNCSDLL_API __declspec(dllexport) #else #define MATHFUNCSDLL_API __declspec(dllimport) #endif
#ifndef FUNCTION_H #define FUNCTION_H
class My_class { public: MATHFUNCSDLL_API void func_hellow(); MATHFUNCSDLL_API void func_privet(); };
#endif |
и файл function.cpp:
//#include "stdafx.h" #include <iostream> using std::cout; using std::endl;
#include "function.h";
void My_class::func_hellow() { cout <<"Hellow world gacpada"<<endl; }
void My_class::func_privet() { cout <<"privet eb tu bl9 mazafaka bich"<<endl; } |
И все нормально создается.
2. Подключение dll.
Создаем новый проект в котором мы будем использовать нашу библиотеку, создаем файл main.cpp
#include "function.h"
int main() { My_class c; c.func_hellow(); c.func_privet();
return 0; } |
Я решил создать для dll для класса, заголовочный класс класса у нас имеет вид function.h
#ifndef FUNCTION_H #define FUNCTION_H
class My_class { public: void func_hellow(); void func_privet(); };
#endif |
ну и в конце копируем созданные ранее файлы библиотеки dll MyNewDll.dll и файл MyNewDll.lib в папку нашего проекта куда мы все подключаем и дальше включаем эти файлы в проект нажимаем горячую комбинацию клавиш Shift+Alt+A и выбираем их или правой клавишей клацаем в обозревателе решений по нашему проекту и переходим в нужную вкладку
появляется окошко в котором выбираем нужные файлы
Нажимаем добавить и в обозревателе решений мы видим что эти файлы у нас добавились
Ну и все мы подключили либу к нашему проекту, дальше нажимаем Ctrl+F5 и создаем проект, все нормально компилируется все работает.
В общем господа мы теперь умеем создавать и подключать динамические библиотеки в visual studio 2013. Для меня как новичка скажу честно это было сразу не легко, я скачивал либы и не знал как их подключить, я делал по простому скидывал все dll в Winsows/System32 , а все lib в папку для lib visual studio, но это не правильно, правильно это когда либы подключаются к создаваемому проекту, так что просто их подключайте к создаваемому проекту.
[youtube]http://www.youtube.com/watch?v=IqFdatdem64[/youtube]
Как добавить dll файл в проект Visual Studio — The Codeby
1 декабря стартует курс "Тестирование Веб-Приложений на проникновение" от команды codeby. Общая теория, подготовка рабочего окружения, пассивный фаззинг и фингерпринт, активный фаззинг, уязвимости, пост-эксплуатация, инструментальные средства, Social Engeneering и многое другое. На курс можно записаться до 5 декабря включительно. Подробнее ...
Как добавить dll файл в проект
Небольшое практическое руководство о том, как подключить dll файл в проект программы Visual Studio
1. Перейдите в окно Solution Explorer и выберите пункт References
2. Нажмите правую кнопку мыши и в появившемся контекстном меню выберите пункт Add Reference
3. Если вы хотите добавить в проект свою или стороннюю библиотеку, то перейдите к пункту №7, если же вы хотите подключить сборку, входящую в состав FCL, тогда в меню Reference Manager выберите пункт Assemblies
4. Выберите подпункт Framework
5. В появившемся по центу списке выберите нужную вам сборку и нажмите кнопку OK.
6. В папке References должна появиться ссылка на добавленный вами файл.
7. Если вам требуется подключить в проект свою или чью-то скаченную библиотеку, то тогда, сначала, нажмите кнопку Browse
8. Откроется диалоговое окно. Перейдите в папку, которая содержит нужный вам dll файл, выберите его и нажмите кнопку Add
Как отлаживать и профилировать любой EXE-файл с помощью Visual Studio
Вам когда-нибудь нужно было отлаживать или профилировать исполняемый файл (файл .exe), для которого у вас нет исходного кода или вы не можете его собрать? Тогда наименее известный тип проекта Visual Studio, проект EXE, для вас!В Visual Studio вы можете открыть любой EXE-файл как «проект». Просто перейдите в Файл -> Открыть -> Проект/Решение и перейдите к файлу .exe . Как если бы это был файл .sln . Visual Studio откроет этот EXE-файл как проект. Эта функция существует уже давно. Она работает на всех поддерживаемых в настоящее время версиях Visual Studio, и документация по ней находится на странице Отладка приложения, которое не является частью решения Visual Studio.
Отладка
Как и в обычном проекте, вы можете начать отладку с помощью F5, которая запустит EXE и подключит отладчик. Если вы хотите отладить запуск, вы можете запустить с помощью F11, который запустит EXE и остановится на первой строке пользовательского кода. Оба эти параметра доступны в контекстном меню для проекта EXE в окне Solution Explorer, как показано ниже:
Для отладки понадобятся символы, файлы PDB, для EXE и любых DLL, которые нужно отладить. Visual Studio будет следовать тому же процессу и попытается получить символы также, как и при отладке обычного проекта. Поскольку маловероятно, что файлы PDB были распространены вместе с EXE-файлом, возможно, вы захотите найти их в сборке или, что еще лучше, на сервере символов. Дополнительную информацию и рекомендации по использованию символов можно найти в этом блоге.
Для эффективной отладки вам также понадобится исходный код, который использовался для сборки EXE, или даже для нескольких файлов, которые вас интересуют. Вам нужно найти эти файлы и открыть их в Visual Studio. Если исходный код не совпадает с исходным кодом, который был собран, EXE Visual Studio предупредит вас, когда вы попытаетесь вставить точку останова, и точка останова не будет привязана. Это поведение может быть изменено в окне Settings peek window. В окне просмотра параметров щелкните текст ссылки Must match source, а затем установите флажок, чтобы разрешить несоответствующий источник, как показано ниже. Конечно, с несоответствующим источником вы никогда не знаете, что произойдет, так что используйте это только на свой страх и риск.
Если EXE был собран с SourceLink, то информация об источнике будет включена в PDB, и Visual Studio попытается загрузить источник автоматически. Это действительно хорошая причина использовать SourceLink с вашими проектами. Даже если у вас есть локальный набор, у вас может не быть той версии, которая использовалась для сборки двоичного файла. SourceLink — ваш надежный способ убедиться, что правильный источник связан с правильным двоичным файлом.
Если вы не можете получить исходный код, у вас еще есть несколько вариантов:
- Используйте инструмент для декомпиляции сборок обратно в C#, который вы можете перекомпилировать в новую сборку, чтобы исправить старую.
- ILSpy — отличный выбор для этого, но есть и множество других хороших платных и бесплатных инструментов.
- Используйте окно инструмента «Disassembly» в Visual Studio.
- Документ Source Not Found содержит ссылку на view disassembly. Имейте в виду, что если вы привыкли к отладке кода на C#, представление о разборке (view disassembly) является крайним средством.
Наконец, если вам нужно передать какие-либо аргументы в отлаживаемый EXE-файл, вы можете настроить их вместе с другими параметрами на странице Свойства проекта (Щелкните правой кнопкой мыши -> Свойства в узле проекта в обозревателе решений).
Профилирование
Вы также можете использовать инструменты профилирования с EXE-файлом, запустив их из Отладка -> Профилирование производительности. На странице запуска инструментов профилирования вы можете выбрать, какие инструменты использовать против EXE. Дополнительную информацию о профилировании можно найти в этих документах ( https://docs.microsoft.com/en-us/visualstudio/profiling/profiling-feature-tour?view=vs-2019).
Заключение
Вот и все. Краткий обзор того, как вы можете использовать Visual Studio для отладки и профилирования приложений, которые вы не создаете и которые могут даже не иметь исходного кода. В следующий раз, когда вам понадобится отладить или профилировать EXE-файл, не забудьте, что вы можете открыть его как решение в Visual Studio!
Подключение dll к проекту Visual Studio 2010 (C++) — Хабр Q&A
Нужно сделать.lib
-файл самостоятельно. Посмотрите, нет ли в комплекте с .dll
файла .def
. Если есть, то можно получить .lib
с помощьюlib.exe /DEF:mylib.def mylib.dll
или
lib.exe /DEF:mylib.def /OUT:mylibname.lib mylib.dll
если нужно другое имя. В таком виде (
dll
+ def
), распространяется, например, sqlite3
.Если .def
-файла нет, посмотрите, какие у вас символы в библиотеке через
dumpbin /exports mylib.dll
Если это практически те же имена, что и в заголовочном файле, значит, библиотека экспортирует символы в стиле С; это хорошо. Перечислите все нужные имена в командной строке:
lib.exe /EXPORT:mylib_func1 /EXPORT:mylib_func2 mylib.dll
(.def
-файл, по сути, делает то же самое.) Единственное, я сейчас не помню, но к именам может спереди добавлятся подчеркивание. Я не уверен, нужно ли указывать имена с подчеркиванием или без.
Если там имен нет, значит, они отрезаны, функции можно определить только по порядковому номеру. Если вокруг них всякая муть, это C++, а муть означает закодированный тип параметров. Это все не очень хорошо, конечно, потому что соответствие номеров функциям не определить (разве что экспериментально), а стандарта на кодирование нет. Но технически создать .lib-файл можно, у опции /EXPORT полная сигнатура такая:
/EXPORT: entryname[= internalname][,@ ordinal[, NONAME]][, DATA]
То есть можно и переименовать функцию, и по номеру ее выбрать, и данные экспортировать. Но это на крайний случай.
lib.exe
обычно не в PATH, из обычной командной строки не найдется, но в группе инструментов Visual Studio должно быть что-то вроде «Command Prompt» — он открывает консоль и добавляет нужные пути в PATH, так что инструменты командной строки становятся доступными.
Ссылки: dumpbin, lib.
c ++ - Как заставить Visual Studio скопировать необходимые файлы .dll в папку выпуска?
Переполнение стека- Около
- Товары
- Для команд
- Переполнение стека Общественные вопросы и ответы
Как скомпилировать dll c ++ с помощью Visual Studio?
Переполнение стека- Около
- Товары
- Для команд
- Переполнение стека Общественные вопросы и ответы
- Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
- Вакансии Программирование и связанные с ним технические возможности карьерного роста
- Талант Нанимайте технических специалистов и создавайте свой бренд работодателя
- Реклама Связаться с разработчиком
Как мне добавить dll в свой проект - visual studio C # 2010
Переполнение стека- Около
- Товары
- Для команд
- Переполнение стека Общественные вопросы и ответы
- Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
- Вакансии Программирование и связанные с ним технические возможности карьерного роста
- Талант Нанимайте технических специалистов и создавайте свой бренд работодателя
- Реклама Обратитесь к разработчикам и технологам со всего мира
Как я могу скомпилировать проект Visual Studio C # без файла DLL по умолчанию?
Переполнение стека- Около
- Товары
- Для команд
- Переполнение стека Общественные вопросы и ответы
c ++ - Как добавить свойства к скомпилированному файлу dll в Visual Studio 2012?
Переполнение стека- Около
- Товары
- Для команд
- Переполнение стека Общественные вопросы и ответы
- Переполнение стека для команд
Visual Studio 2010 C ++ DLL project - Нет выходного файла DLL!
Переполнение стека- Около
- Товары
- Для команд
- Переполнение стека Общественные вопросы и ответы
- Переполнение стека для команд Где разработчики и технологи делятся частными знаниями wi