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

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

Восстановить пароль Регистрация
 
Varno
Сообщений: n/a
23.10.2012, 23:20     Создать модуль DLL библиотек с функциями вычисления размера файла #1
доброго времени суток! Есть довольно обширное задание у меня из которого я никак не могу одолеть следующую часть:

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

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

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

C++ Создание библиотек DLL
C++ Задан вещественный массив размера N. Создать целочисленный массив такого же размера, в котором будут записаны индексы исходного массива в порядке во
C++ Создать абстрактный класс с виртуальной функцией вычисления нормы и модуля; определить производные классы с собственными функциями
C++ Создать абстрактный базовый класс Тройка чисел с виртуальными методами увеличения на 1. Создать производный класс Время со своими функциями
Создать абстрактный базовый класс с виртуальной функцией - Объем. Создать производные классы: Пирамида, Шар со своими функциями объема C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
vxg
Модератор
 Аватар для vxg
2639 / 1650 / 156
Регистрация: 13.01.2012
Сообщений: 6,212
24.10.2012, 07:24     Создать модуль DLL библиотек с функциями вычисления размера файла #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: Теория + Практика
Kgfq
74 / 37 / 2
Регистрация: 23.09.2012
Сообщений: 408
24.10.2012, 09:12     Создать модуль DLL библиотек с функциями вычисления размера файла #3
vxg, вы написали обычный include, а не dll. Разве я не прав?
vxg
Модератор
 Аватар для vxg
2639 / 1650 / 156
Регистрация: 13.01.2012
Сообщений: 6,212
24.10.2012, 11:11     Создать модуль DLL библиотек с функциями вычисления размера файла #4
нет, не правы. включение заголовочного файла с прототипами функций расположенных в DLL в модуль где эти функции будут использоваться необходимо. как необходимо и подключение собственно DLL к проекту способом специфичным для вашей среды разработки.
Yandex
Объявления
24.10.2012, 11:11     Создать модуль DLL библиотек с функциями вычисления размера файла
Ответ Создать тему
Опции темы

Текущее время: 21:00. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru