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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Varno
Сообщений: n/a
#1

Создать модуль DLL библиотек с функциями вычисления размера файла - C++

23.10.2012, 23:20. Просмотров 449. Ответов 3
Метки нет (Все метки)

доброго времени суток! Есть довольно обширное задание у меня из которого я никак не могу одолеть следующую часть:

Создать модуль DLL библиотек с двумя функциями:
1) Определить и вывести размер файла, название которого запрашивается
2) Изменить название файла который запрашивается пользователем.

Все на Си в виде дополнения Win32 console application

Собственно с таким еще не сталкивался, только учусь) Заранее буду благодарен за помощь или хотя бы пример подобного задания!
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.10.2012, 23:20
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Создать модуль DLL библиотек с функциями вычисления размера файла (C++):

Создать абстрактный класс с виртуальной функцией вычисления нормы и модуля; определить производные классы с собственными функциями - C++
Прошу вашей интеллектуальной помощи) Условие задачи: 16. Создать абстрактный класс Norm с виртуальной функцией вычисления нормы и...

Создание библиотек DLL - C++
Пишу в Dev-C++. Хочу создать DLL - библиотеку. Помогите разобраться в последовательность написания библиотеки DLL.

Создание динамических библиотек DLL С++ - C++
Помогите реализовать на С++ : Розробити динамічно завантажувану бібліотеку, котра використовує функцію, що виводить отриманий параметр...

Подключение библиотек lib и dll - C++
Здравствуйте. Подскажите, пожалуйста, как исправить такую ошибку: Ошибка 2 error LNK1104: не удается открыть файл "opencv_core2411.lib"....

Экспорт классов из dll библиотек (Visual Studio) - C++
Здравствуйте! Подскажите, как такой код вставить в dll файл и загрузить его в программу: //log.h #include <iostream> class Log {...

Список функций из стандартных dll библиотек (lib.exe MVS) - C++
В общем нужен список функций (желательно и хедеров, в которых они находятся) исходя из имени стандартной библиотеки dll. Наткнулся в...

3
vxg
Модератор
3172 / 1975 / 222
Регистрация: 13.01.2012
Сообщений: 7,609
24.10.2012, 07:24 #2
h-файл

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
//------------------------------------------------------------------------------
//используем условную компиляцию для того, что бы защитить модули от повторного
//включения заголовочного файла
 
#ifndef MY_DLL_H
#define MY_DLL_H
//------------------------------------------------------------------------------
//используем условную компиляцию для подстановки правильных модификаторов в
//описания и определения функций:
//- если идентификатор EXPORT определен функции будут экспортироваться -
//используем это для компиляции нашей DLL
//- если идентификатор EXPORT не определен функции будут импортироваться -
//используем это для компиляции приложений, использующих нашу DLL
//- все функции имеют модификатор __stdcall
 
#ifdef EXPORT
#define DECL_SPEC __stdcall __export
#else
#define DECL_SPEC __stdcall __import
#endif
 
//------------------------------------------------------------------------------
long DECL_SPEC sizeof_file(const char *name);
int DECL_SPEC rename_file(const char *name_old, const char *name_new);
//------------------------------------------------------------------------------
//конец участка с описаниями функций
 
//отменяем определение идентификатора EXPORT для того, что бы он действовал
//только в заголовочном файле
 
#undef EXPORT
//------------------------------------------------------------------------------
//конец участка, защищаемого от повторного включения
 
#endif //MY_DLL_H
c-файл

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
37
//------------------------------------------------------------------------------
//определяем идентификатор EXPORT - сейчас мы компилируем нашу DLL
 
#define EXPORT
#include "my_dll.h"
//------------------------------------------------------------------------------
#include <windows.h>
#include <sys/stat.h>
#include <stdio.h>
//------------------------------------------------------------------------------
#pragma argsused
int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void *lpReserved)
{
    switch (reason)
    {
        case DLL_PROCESS_ATTACH:
            //здесь может производиться инициализация
            break;
 
        case DLL_THREAD_ATTACH:
        case DLL_THREAD_DETACH:
        case DLL_PROCESS_DETACH:
            break;
    }
    return 1;
}
//------------------------------------------------------------------------------
long sizeof_file(const char *name)
{
    struct stat si;
    return stat(name, &si)? -1 : si.st_size;
}
//------------------------------------------------------------------------------
int rename_file(const char *old_name, const char *new_name)
{
    return rename(old_name, new_name);
}
c-файл пример использования

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
37
38
39
40
41
//---------------------------------------------------------------------------
//lib-файл должен быть включен в проект: Project/Add to Project...
//dll-файл должен быть доступен: находиться либо в папке приложения либо в
//системной папке Windows
 
//идентификатор EXPORT не определен - сейчас мы компилируем приложение,
//использующее нашу DLL
 
#include "my_dll.h"
#include <stdio.h>
//---------------------------------------------------------------------------
void main(void)
{
    char name_old[256];
    char name_new[256];
    long s;
 
    printf("Name old>");
    scanf("%s", name_old);
 
    printf("Name new>");
    scanf("%s", name_new);
 
    if (rename_file(name_old, name_new))
    {
        printf("Can not rename file\n");
        system("pause");
        return;
    }
    printf("Renamed\n");
 
    s = sizeof_file(name_new);
    if (s == -1)
    {
        printf("Can not get size of file\n");
        system("pause");
        return;
    }
    printf("Size of file: %l\n", s);
    system("pause");
}
а вообще Dynamic-Link Library: Теория + Практика
0
Kgfq
74 / 37 / 2
Регистрация: 23.09.2012
Сообщений: 408
24.10.2012, 09:12 #3
vxg, вы написали обычный include, а не dll. Разве я не прав?
0
vxg
Модератор
3172 / 1975 / 222
Регистрация: 13.01.2012
Сообщений: 7,609
24.10.2012, 11:11 #4
нет, не правы. включение заголовочного файла с прототипами функций расположенных в DLL в модуль где эти функции будут использоваться необходимо. как необходимо и подключение собственно DLL к проекту способом специфичным для вашей среды разработки.
0
24.10.2012, 11:11
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.10.2012, 11:11
Привет! Вот еще темы с ответами:

Создать абстрактный базовый класс с виртуальной функцией - Объем. Создать производные классы: Пирамида, Шар со своими функциями объема - C++
Создать абстрактный базовый класс с виртуальной функцией - Объем. Создать производные классы: Пирамида, Шар со своими функциями объема:...

Как лучше копировать память, обмениваться указателями и т.д. при работе с кучей динамических библиотек (DLL) ? - C++
Привет! Вот есть много DLL-к, каждая работает со своей внутренней динамической памятью, а так же есть необходимость работать с объектами...

Создать модуль DLL-модуль с классом, позволяющим запускать внешнюю программу - C#
Как же все таки создать модуль DLL-модуль с классом, позволяющим запускать внешнюю программу. На многих форумах да и здесь находил код: ...

Создать приложение с использованием DLL-библиотек - Delphi
Помогите создать приложение с использованием DLL-библиотек для решения уравнения y=(sin(pi/2+3*a))/(1-sin(3*a-pi)) Добавлено через...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

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