Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.61/337: Рейтинг темы: голосов - 337, средняя оценка - 4.61
23 / 23 / 7
Регистрация: 30.01.2009
Сообщений: 103

Создание DLL

29.01.2009, 20:36. Показов 62785. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброго время суток помогите мне разобраться в том как создавать .dll или подскажите литературу
Например как написать вот эту библиотеку. Я искал в интернете, но так и не понял, как ее написать

C++
1
2
3
4
Void hi ()
  {
    cout << "Hello from dll" << endl; 
  }
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.01.2009, 20:36
Ответы с готовыми решениями:

Кто может поделиться файлами ogg.dll, vorbis.dll и vorbisfile.dll - 32-х и 64-битными версиями?
Движок перевожу на платформу Win64 и нужно, чтобы разрядность ЕХЕ и DLL совпадали, а в интернете искал 64-битные версии ogg.dll, vorbis.dll...

Создание dll библиотеки без добавления в решение
Доброго времени суток. Я сделал библиотеку dll строго по http://msdn.microsoft.com/ru-ru/library/vstudio/ms235636(v=vs.100).aspx Всё...

Порядковый номер 354 не найден в библиотеке DLL LIBEAY32.DLL
Всем привет, вылезает ошибка при компиляции приложения &quot;Порядковый номер 354 не найден в библиотеке DLL LIBEAY32.DLL&quot;. Работаю со...

14
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
29.01.2009, 20:43
Какой у тя компилер? Среда?
0
23 / 23 / 7
Регистрация: 30.01.2009
Сообщений: 103
29.01.2009, 21:36  [ТС]
Dev-C++ 4.9.9.2 среда разработки C++
0
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
29.01.2009, 21:42
Создай новый проект, который DLL. Напиши код своей либы и собери.
0
23 / 23 / 7
Регистрация: 30.01.2009
Сообщений: 103
29.01.2009, 22:02  [ТС]
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
------------------/dllmain.cpp-----------------------
/* Replace "dll.h" with the name of your header */
#include "dll.h"
#include <windows.h>
 
DllClass:: DllClass() // Я так понимаю вот здесь нужно писать код
{
}
 
DllClass::~DllClass ()
{
}
 
BOOL APIENTRY DllMain (HINSTANCE hInst     /* Library instance handle. */ ,
                       DWORD reason        /* Reason this function is being called. */ ,
                       LPVOID reserved     /* Not used. */ ) // Здесь нечего не трогаю
{
    switch (reason)
    {
      case DLL_PROCESS_ATTACH:
        break;
      case DLL_PROCESS_DETACH:
        break;
      case DLL_THREAD_ATTACH:
        break;
      case DLL_THREAD_DETACH:
        break;
    }
    /* Returns TRUE on success, FALSE on failure */
    return TRUE;
}
P.S Я очень прошу прощения за то, что не использую код так как не вижу где тулбар
0
Эксперт С++
 Аватар для XuTPbIu_MuHTAu
2256 / 771 / 25
Регистрация: 27.05.2008
Сообщений: 1,496
29.01.2009, 22:10
Цитата Сообщение от Alex90 Посмотреть сообщение
P.S Я очень прошу прощения за то, что не использую код так как не вижу где тулбар
Тулбар - сверху,над окном отправки сообщений. Там меняется шрифт,вставляются ссылки, картинки,смайлы....и теги кода.
0
 Аватар для Шерсть-На-Носу
48 / 48 / 8
Регистрация: 30.01.2009
Сообщений: 168
30.01.2009, 09:43
Цитата Сообщение от Alex90 Посмотреть сообщение
Всем доброго время суток помогите мне разобраться в том как создавать .dll или подскажите литературу...
Почитай вот это - http://slil.ru/26598390
1
23 / 23 / 7
Регистрация: 30.01.2009
Сообщений: 103
30.01.2009, 15:00  [ТС]
Создал проект

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
----------/dllrun.cpp/---------------
#include <conio.h>
#include "dlltest.h"
 
extern "C" __declspec(dllexport) void hi();
 
 void main() {
      hi ();
      cout << " TEST";
      getch();
}
 
---------/dlltest.cpp/------------------
 
#include "dlltest.h"
 
extern "C" __declspec(dllexport)
 
void hi() {
  {
cout << "Hi from Dll";
  }
}
 
----------/dlltest.h/--------------------
 
#ifndef _DLLTEST_H_
#define _DLLTEST_H_
 
#include <iostream.h>
#include <stdio.h>
#include <windows.h>
 
extern "C" __declspec(dllexport) void hi();
 
#endif
Библиотека появилась, НО нету “dllrun.exe” Зато пишет вот такие ошибки
4 C:\Dev-Cpp\include\c++\3.4.2\backward\iostream. h:31, from dlltest.h In file included from C:/Dev-Cpp/include/c++/3.4.2/backward/iostream.h:31, from dlltest.h
2 F:\src\dlltest.h:4, from dllrun.cpp from dlltest.h:4, from dllrun.cpp
2 F:\src\dllrun.cpp from dllrun.cpp
32:2 C:\Dev-Cpp\include\c++\3.4.2\backward\backward_ warning.h #warning This file includes at least one deprecated or antiquated header. Please consider using one of the 32 headers found in section 17.4.1.2 of the C++ standard. Examples include substituting the <X> header for the <X.h> header for C++ includes, or <iostream> instead of the deprecated header <iostream.h>. To disable this warning use -Wno-deprecated.
6 F:\src\dllrun.cpp `main' must return `int'
F:\src\Makefile.win [Build Error] [dllrun.o] Error 1
0
 Аватар для Шерсть-На-Носу
48 / 48 / 8
Регистрация: 30.01.2009
Сообщений: 168
02.02.2009, 11:29
На Dev-C++ никогда не работал, покажу, как ЭТО делается в MSVS.



dll.cpp - файл нашей dll-ки
C++
1
2
3
4
5
6
7
8
9
10
// Компилировать командой cl.exe dll.cpp /LD
 
#include <iostream.h>
 
#pragma comment(linker, "/def:DLL.def") // Указание линкеру добавить список экспорта
 
extern "C" __declspec(dllexport) void __stdcall MyFunction(void)
{
    cout << "Hi from DLL!" << endl;
}
dll.def - здесь список экспортируемых функций
C++
1
2
EXPORTS
    MyFunction
TestDll.cpp - тестовая программа
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
// Компилировать командой cl.exe TestDll.cpp
 
#include <iostream.h>
#include <windows.h>
 
typedef void (__stdcall *MYPROC)(void);
 
int main(void)
{
    cout << "Load Dll..." << endl;
 
    HMODULE hLib = LoadLibrary("DLL.dll"); // Загружаем библиотеку
    if (hLib)
    {
        cout << "Library load." << endl;
 
        MYPROC MyFunction = (MYPROC)GetProcAddress(hLib, "MyFunction"); // Загружаем функцию
        if (MyFunction) 
        {
            cout << "Function load." << endl;
 
            MyFunction(); // Вызов функции из dll!!!
        }
    }
 
    return 0;
}
Осталось только запустить TestDll.exe.
3
h4c
14.06.2009, 23:30
Здравствуйте.
Юзаю Microsoft Visual Studio 2008... посмотрел все, что здесь предлагается и погуглил, но не заработало. Мне нужна была динамически загружаемая DLL. В итоге сделал. Выложу пример, может кому пригодится.
Вложения
Тип файла: rar example_DLL.rar (4.25 Мб, 3392 просмотров)
workster
08.12.2009, 19:12
Цитата Сообщение от Шерсть-На-Носу Посмотреть сообщение
На Dev-C++ никогда не работал, покажу, как ЭТО делается в MSVS.



dll.cpp - файл нашей dll-ки



dll.def - здесь список экспортируемых функций

Code
1
2
EXPORTS
    MyFunction
TestDll.cpp - тестовая программа

...
Осталось только запустить TestDll.exe.
Огромное спасибо за " .def " 3 дня мучался и наконец получилось!
для чистого borland c++ 5.01 в коде (dll.cpp) не надо линку делать експорт, сильно ругается на #pragma
0 / 0 / 1
Регистрация: 09.09.2009
Сообщений: 4
29.04.2010, 13:22
Всем доброго времени суток!
Среда выполнения Borland Builder
проблема в вызове метода класса зашитого в dll
//содержание dll
//main.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
//---------------------------------------------------------------------------
 
#include <vcl.h>
#include <windows.h>
#pragma hdrstop
#include "dll_lmain.h"
#include <stdio>
#pragma argsused
int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)
{
    return 1;
}
 
MyClass::MyClass()
{
    field =10;
}
 
bool MyClass::Message(int a,int b)
    {
      int c=  a+b;
      field = c;
     return true;
      //printf("asdds=%i",c);
    }
 
DLL_SPEC MyClass* ClassReturn()
{
    MyClass* my = new MyClass();
    return my;
}
//---------------------------------------------------------------------------
//содержание dll_main.h
C++
1
2
3
4
5
6
7
8
9
#define DLL_SPEC extern "C" __declspec(dllexport)
 
class MyClass
{
public:
    MyClass();
    int field;
    bool Message(int a,int b);
};
//Основной проект
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    MyClass* (*ClassReturn)();
    MyClass* my;
    HINSTANCE hLib = LoadLibrary("mydll.dll");
    if (hLib) {
        ClassReturn= (MyClass*(*)()) GetProcAddress(hLib, "_ClassReturn");
        if (ClassReturn)
        {
            my = ClassReturn();
            Label1->Caption = IntToStr(my->field);
            my->field =3;
            //my->Message(2,3);                          //здесь выдает ошибку             
            Label2->Caption = IntToStr(my->field);
        }
    }
    FreeLibrary(hLib);
Ошибка [Linker Error] Unresolved external 'MyClass::Message(int, int)' referenced from C:\123\DLL\UNIT1.OBJ
0
 Аватар для mrden777
14 / 20 / 14
Регистрация: 20.03.2018
Сообщений: 485
30.04.2018, 17:28
Я зарубил видео + линковку по DLL
0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
30.04.2018, 18:00
mrden777, почему не девять лет назад?
0
 Аватар для mrden777
14 / 20 / 14
Регистрация: 20.03.2018
Сообщений: 485
30.04.2018, 18:23
Croessmah Тогда я еще PascaL изучал, было не до C ++
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.04.2018, 18:23
Помогаю со студенческими работами здесь

Windows I/o без Kernel32.dll и Advapi32.dll
Добрый день. Необходимо в Windows XP SP3 распечатать в стандартный поток &quot;some text here&quot; без прямого или косвенного использования...

При компиляции DLL-проекта не создается DLL-ка
Добрый день. создал в Visual Studio 2010 проект C+= типа DLL. В файл dllmain.cpp вставил вот такой код: // test.cpp: определяет...

Создание DLL
Помогите создать DLL в C++ Builder 6 или Dev-CPP которая будет полностью анологична следующей написаной на Delphi 7: library MyDLL; ...

Создание DLL
Windows XP 32, C++ Builder4. Система (комплекс программ) имеет тенденцию к расширению за счет подключения новых модулей.В какой-то...

Создание DLL
Здравствуйте, помогите пожалуйста разобраться- не могу понять в чём ошибка. Создаю C++ Builder - DLL ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru