Форум программистов, компьютерный форум CyberForum.ru

C++

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 316, средняя оценка - 4.85
Alex90
Сообщений: n/a
#1

Создание DLL - C++

29.01.2009, 20:36. Просмотров 40536. Ответов 11
Метки нет (Все метки)

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

C++
1
2
3
4
Void hi ()
  {
    cout << "Hello from dll" << endl; 
  }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.01.2009, 20:36     Создание DLL
Посмотрите здесь:

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

Создание .dll - C++
Здравствуйте.Нужна помощь в создание dll.Опишите пожалуйста саму структуру dll-файла. Компилятор-g++ 4.8.1,среда-notepad++.

Создание DLL - C++
const __int64 MathArray = {{0, 1}, {2, 3}, {4, 5}}; Ошибок нет. но в .h ругается!!

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

создание DLL - C++
Помогите пожалуйста понять что не так сделала 8)))) может что-то странное в коде Program1.dll ...

Создание DLL - C++
Здравствуйте!!!! Помогите пожалуйста создать dll, проблема заключается в том что вылетает множество след. ошибок 2 IntelliSense:...

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vourhey
Почетный модератор
6474 / 2249 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
29.01.2009, 20:43     Создание DLL #2
Какой у тя компилер? Среда?
Alex90
Сообщений: n/a
29.01.2009, 21:36     Создание DLL #3
Dev-C++ 4.9.9.2 среда разработки C++
Vourhey
Почетный модератор
6474 / 2249 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
29.01.2009, 21:42     Создание DLL #4
Создай новый проект, который DLL. Напиши код своей либы и собери.
Alex90
Сообщений: n/a
29.01.2009, 22:02     Создание DLL #5
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 Я очень прошу прощения за то, что не использую код так как не вижу где тулбар
XuTPbIu_MuHTAu
Эксперт С++
2224 / 739 / 10
Регистрация: 27.05.2008
Сообщений: 1,508
29.01.2009, 22:10     Создание DLL #6
Цитата Сообщение от Alex90 Посмотреть сообщение
P.S Я очень прошу прощения за то, что не использую код так как не вижу где тулбар
Тулбар - сверху,над окном отправки сообщений. Там меняется шрифт,вставляются ссылки, картинки,смайлы....и теги кода.
Шерсть-На-Носу
40 / 40 / 1
Регистрация: 30.01.2009
Сообщений: 168
30.01.2009, 09:43     Создание DLL #7
Цитата Сообщение от Alex90 Посмотреть сообщение
Всем доброго время суток помогите мне разобраться в том как создавать .dll или подскажите литературу...
Почитай вот это - http://slil.ru/26598390
Alex90
19 / 19 / 1
Регистрация: 30.01.2009
Сообщений: 103
30.01.2009, 15:00     Создание DLL #8
Создал проект

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
Шерсть-На-Носу
40 / 40 / 1
Регистрация: 30.01.2009
Сообщений: 168
02.02.2009, 11:29     Создание DLL #9
На 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.
h4c
Сообщений: n/a
14.06.2009, 23:30     Создание DLL #10
Здравствуйте.
Юзаю Microsoft Visual Studio 2008... посмотрел все, что здесь предлагается и погуглил, но не заработало. Мне нужна была динамически загружаемая DLL. В итоге сделал. Выложу пример, может кому пригодится.
Вложения
Тип файла: rar example_DLL.rar (4.25 Мб, 3199 просмотров)
workster
Сообщений: n/a
08.12.2009, 19:12     Создание DLL #11
Цитата Сообщение от Шерсть-На-Носу Посмотреть сообщение
На Dev-C++ никогда не работал, покажу, как ЭТО делается в MSVS.



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



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

Код
EXPORTS
	MyFunction
TestDll.cpp - тестовая программа

...
Осталось только запустить TestDll.exe.
Огромное спасибо за " .def " 3 дня мучался и наконец получилось!
для чистого borland c++ 5.01 в коде (dll.cpp) не надо линку делать експорт, сильно ругается на #pragma
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.04.2010, 13:22     Создание DLL
Еще ссылки по теме:

Создание dll - C++
Всем привет, лютые и бородатые прогеры :) Потихоньку изучаю язык С. Столкнулся с такой проблемой. Не могу сделать динамическую...

Создание потока из DLL - C++ WinAPI
Господа, подкиньте инфы о создании потока из DLL, наверняка кто-то делал подобные дллки, и может поделиться примерами, а то в интернете и...

Создание кнопок в DLL - C++ Builder
Мне нужно создать надстройку в Word. Как я разобралась, надо использовать dll. Но для надсройки надо создавать кнопки. Отсяда вопрос:...

Создание формы в dll - C++ Builder
Добрый день! Задача простая: вызвать форму из dll (дальше на ней нужно будет делать много интересных штук,но с этим я разберусь) ...

Создание и подключение DLL - C++ WinAPI
Добрый вечер, уважаемые форумчане, Прошу помощи в коде создания и подключения DLL. Вот код: header DLL-файла sergei.h: ...


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

Или воспользуйтесь поиском по форуму:
alexakafranc
0 / 0 / 0
Регистрация: 09.09.2009
Сообщений: 4
29.04.2010, 13:22     Создание DLL #12
Всем доброго времени суток!
Среда выполнения 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
Yandex
Объявления
29.04.2010, 13:22     Создание DLL
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru