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

Создание DLL

29.01.2009, 20:36. Показов 62985. Ответов 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
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru