Аватар для xamelione25
-4 / 5 / 2
Регистрация: 04.02.2013
Сообщений: 1,860

Не открывается библиотека DLL при прописывании её в коде к консольному приложению

31.03.2019, 17:10. Показов 510. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите исправить ошибки...

К заданию (см.скрин 1 - word) были сделаны статическая библиотека "Labaratornaya1" и библиотека DLL "Labaratornaya1DLL" (см архив). Отдельно статическая библиотека в консольном приложении "L1_lab" запускается, но если я добавляю к ней библиотеку DLL, то у меня сразу вылазят эти ошибки (см.скрин 2 и 3 - VS).

Мною были сделаны к ним заголовочный файл *.h и файл исходного кода *.cpp. к каждой библиотеки

Labaratornaya1
L1_Library.h
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
#pragma once
#if !defined (_L1_Library_h_)
#define _L1_Library_h_
 
#include <Windows.h>
 
BOOL PrintComputerName();
BOOL PrintDNSHostName();
BOOL PrintUserName();
BOOL PrintFullUserName();
 
#endif // !defined (_L1_Library_h_)


L1_Library.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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#define SECURITY_WIN32 256 
#include "L1_Library.h"
#include <stdio.h>
#include <tchar.h>
#include <lmcons.h>
#include <security.h>
#include <locale.h>
#include <security.h>
 
BOOL PrintComputerName()
{
    //величина буфера для записи в него имени компьютера на 16 символов
    TCHAR szBuffer[MAX_COMPUTERNAME_LENGTH + 1];
    //размер имени компьютера заложенный в буфере
    DWORD cch = _countof(szBuffer);
    //функция получения имени компьютера берущая для буфера (указатель на него, размер)
    BOOL bRet = GetComputerName(szBuffer, &cch);  
    if (FALSE != bRet)
    {
        //вывод в консоль текст (форматный строковый вывод, буферная величина)
        _tprintf(TEXT("Name: %s\n"), szBuffer);
    }
    return bRet;
}
 
BOOL PrintDNSHostName()
{
    //буфер содержащий сообщение об ошибке
    LPTSTR lpszBuffer = NULL;
    //начальная инициализация
    DWORD cch = 0;
    //инициализация переменной
    GetComputerNameEx(ComputerNamePhysicalDnsHostname, NULL, &cch);
    //выделение памяти под буфер
    lpszBuffer = new TCHAR[cch];
    //функция получения DNS имени компьютера
    BOOL bRet = GetComputerNameEx(ComputerNamePhysicalDnsHostname, lpszBuffer, &cch);
    if (FALSE != bRet)
    {
        // вывод в консоль текст (форматный строковый вывод, буферная величина)
        _tprintf(TEXT("Hostname: %s\n"), lpszBuffer);
    }
    //очистка памяти выделяемую под буфер
    delete[]lpszBuffer;
    return bRet;
}
 
BOOL PrintUserName()
{
    TCHAR userNameBuffer[UNLEN + 1];
    DWORD countUNameBuffer = _countof(userNameBuffer);
    BOOL codeErr = GetUserName(userNameBuffer, &countUNameBuffer);
    if (FALSE != codeErr)
    {
        _tprintf(TEXT("User name: %s\n"), userNameBuffer);
    }
    return codeErr;
}
 
BOOL PrintFullUserName()
{
    LPTSTR userFNameBuffer = NULL;
    DWORD countUserFNameBuffer = 0;
    GetUserNameEx(NameSamCompatible, NULL, &countUserFNameBuffer);
    userFNameBuffer = new TCHAR[countUserFNameBuffer];
    BOOLEAN codeErr = GetUserNameEx(NameSamCompatible, userFNameBuffer, &countUserFNameBuffer);
    if (FALSE != codeErr)
    {
        _tprintf(TEXT("Full username: %s\n"), userFNameBuffer);
    }
    delete[]userFNameBuffer;
    return codeErr;
}

------------------------------------------------------

Labaratornaya1DLL
Labaratornaya1DLL.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
#pragma once
#if !defined(_Labaratotnaya1DLL_H)
#define _Labaratotnaya1DLL_
#ifdef LABARATORNAYA1DLL_EXPORTS
#define LABARATORNAYA1DLL_API _declspec(dllexport)
#else
#define LABARATORNAYA1DLL_API _declspec(dllimport)
#endif
#ifdef _cplusplus
extern "C"
{
// вывод в стандартный поток системных каталогов
#endif 
    LABARATORNAYA1DLL_API void PrintSysDirectories(const long csidl[], unsigned long nCount);
    LABARATORNAYA1DLL_API void PrintDateTime();
    LABARATORNAYA1DLL_API void PrintOSVersionInfo();
    LABARATORNAYA1DLL_API void PrintSysMet();
    LABARATORNAYA1DLL_API void PrintSM_CXDLGFRAME();
    LABARATORNAYA1DLL_API void PrintSM_CYDLGFRAME();
    LABARATORNAYA1DLL_API void PrintSM_CXMENUSIZE();
    LABARATORNAYA1DLL_API void PrintSM_CYMENUSIZE();
    LABARATORNAYA1DLL_API void PrintSM_NETWORK();
    LABARATORNAYA1DLL_API void PrintSP();
    LABARATORNAYA1DLL_API void PrintSPI_GETDROPSHADOW();
    LABARATORNAYA1DLL_API void PrintSPI_GETKEYBOARDPREF();
 
#ifdef _cplusplus
}
#endif
#endif


Labaratornaya1DLL.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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#include <Windows.h>
#include <stdio.h>
#include <tchar.h>
#include <ShlObj.h>
#include <cstring>
#include "Labaratornaya1DLL.h"
LABARATORNAYA1DLL_API void PrintSysDirectories(const long csidl[], unsigned long nCount)
{
    TCHAR szBuffer[MAX_PATH + 1];
    for (unsigned long i = 0; i < nCount; ++i)
    {
        HRESULT hr = SHGetFolderPath(NULL, csidl[i], NULL, SHGFP_TYPE_CURRENT, szBuffer);
        if (S_OK == hr)
            _tprintf(TEXT("%d: %s \n"), i + 1, szBuffer);
    }
}
LABARATORNAYA1DLL_API void PrintDateTime()
{
    TCHAR bufferDate[12];
    TCHAR bufferTime[6];
    GetDateFormat(LOCALE_SYSTEM_DEFAULT, NULL, NULL, TEXT("d-M-yyyy"), bufferDate, 11);
    _tprintf(TEXT("Дата: %s \n"), bufferDate);
    GetDateFormat(LOCALE_SYSTEM_DEFAULT, NULL, NULL, TEXT("H:m tt"), bufferTime, 6);
    _tprintf(TEXT("Время: %s \n"), bufferTime);
}
LABARATORNAYA1DLL_API void PrintOSVersionInfo()
{
    OSVERSIONINFO MyOS = { sizeof(MyOS) };
    BOOL OSVersionErr = GetVersionEx(&MyOS);
    switch (MyOS.dwMajorVersion*MyOS.dwMinorVersion)
    {
    case 0: _tprintf(TEXT("Версия ОС: Windows Vista\n")); break;
    case 5: _tprintf(TEXT("Версия ОС: Windows XP\n")); break;
    case 6: _tprintf(TEXT("Версия ОС: Windows 7\n")); break;
    case 10: _tprintf(TEXT("Версия ОС: Windows Server 2003\n")); break;
    case 12: _tprintf(TEXT("Версия ОС: Windows 8\n")); break;
    default: _tprintf(TEXT("Другая ОС\n"));
        break;
    }
    _tprintf(TEXT("Номер сборки ОС: %lu \n"), MyOS.dwBuildNumber);
    _tprintf(TEXT("Идентификатор платформы ОС: %lu  \n"), MyOS.dwPlatformId);
    if (wcscmp(MyOS.szCSDVersion, TEXT("")))
        _tprintf(TEXT("Версия пакета обновлений %s \n"), MyOS.szCSDVersion);
    else _tprintf(TEXT("SP не установлен \n"), MyOS.szCSDVersion);
 
}
LABARATORNAYA1DLL_API void PrintSysMet()
{
    PrintSM_CXDLGFRAME();
    PrintSM_CYDLGFRAME();
    PrintSM_CXMENUSIZE();
    PrintSM_CYMENUSIZE();
    PrintSM_NETWORK();
}
LABARATORNAYA1DLL_API void PrintSM_CXDLGFRAME()
{
    _tprintf(TEXT("Ширина рамки окна, имеющего стиль WS_DLGFRAME: %d \n"), GetSystemMetrics(SM_CXDLGFRAME));
}
LABARATORNAYA1DLL_API void PrintSM_CYDLGFRAME()
{
    _tprintf(TEXT("Высота рамки окна, имеющего стиль WS_DLGFRAME: %d \n"), GetSystemMetrics(SM_CYDLGFRAME));
}
LABARATORNAYA1DLL_API void PrintSM_CXMENUSIZE()
{
    _tprintf(TEXT("Ширина кнопок меню: %d \n"), GetSystemMetrics(SM_CXMENUSIZE));
}
LABARATORNAYA1DLL_API void PrintSM_CYMENUSIZE()
{
    _tprintf(TEXT("Высота кнопок меню: %d \n"), GetSystemMetrics(SM_CYMENUSIZE));
}
LABARATORNAYA1DLL_API void PrintSM_NETWORK()
{
    _tprintf(TEXT("SM_NETWORK: %d \n"), GetSystemMetrics(SM_NETWORK));
}
LABARATORNAYA1DLL_API void PrintSP()
{
    PrintSPI_GETDROPSHADOW();
    PrintSPI_GETKEYBOARDPREF();
}
LABARATORNAYA1DLL_API void PrintSPI_GETDROPSHADOW()
{
    BOOL onOrOff;
    SystemParametersInfo(SPI_GETDROPSHADOW, NULL, &onOrOff, NULL);
    if (onOrOff)
        _tprintf(TEXT("Эффект тени включен\n"));
    else TEXT("Эффект тени выключен\n");
}
LABARATORNAYA1DLL_API void PrintSPI_GETKEYBOARDPREF()
{
    BOOL onOrOff;
    SystemParametersInfo(SPI_GETKEYBOARDPREF, NULL, &onOrOff, NULL);
    if (onOrOff)
        _tprintf(TEXT("Пользователь полагается на клавиатуру\n"));
    _tprintf(TEXT("Пользователь не полагается на клавиатуру\n"));
}

------------------------------------------------------
L1_lab
L1_lab.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
#include "StdAfx.h"
#include <tchar.h>
#include <locale.h>
#include "L1_Library.h"
#include "Labaratotnaya1DLL.h"
 
int _tmain()
{
    _tsetlocale(LC_ALL, TEXT("Russian"));
    PrintComputerName();
    PrintDNSHostName();
    PrintUserName();
    PrintFullUserName();
    PrintSysDirectories(const long csidl[], unsigned long nCount);
    PrintDateTime();
    PrintOSVersionInfo();
    PrintSM_CXDLGFRAME();
    PrintSM_CYDLGFRAME();
    PrintSM_CXMENUSIZE();
    PrintSM_CYMENUSIZE();
    PrintSM_NETWORK();
    PrintSPI_GETDROPSHADOW();
    PrintSPI_GETKEYBOARDPREF();
}
Миниатюры
Не открывается библиотека DLL при прописывании её в коде к консольному приложению   Не открывается библиотека DLL при прописывании её в коде к консольному приложению   Не открывается библиотека DLL при прописывании её в коде к консольному приложению  

Вложения
Тип файла: rar Labaratornaya1.rar (7.68 Мб, 3 просмотров)
Тип файла: rar L1_lab.rar (8.79 Мб, 3 просмотров)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
31.03.2019, 17:10
Ответы с готовыми решениями:

Динамическое подключение библиотеки Dll к консольному приложению
Как динамически подключить библиотеку DLL к консольному приложению? Как по адресу вызывать подпрограмму ? и зачем откреплять библиотеку...

Доступ к консольному приложению
Всем привет! Не нашел решения проблемы, может вы что подскажете? Суть проблемы: Есть некое консольное приложение, которое должно...

Подключите библиотеку к консольному приложению
Создайте личную библиотеку, в которой будет выводиться сообщение «Привет Мир!», которое будет считываться из файла. Подключите библиотеку к...

1
 Аватар для xamelione25
-4 / 5 / 2
Регистрация: 04.02.2013
Сообщений: 1,860
31.03.2019, 17:17  [ТС]
L1_lab.cpp
Labaratornaya1
Labaratornaya1DLL
Вложения
Тип файла: rar repos.rar (755.4 Кб, 3 просмотров)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
31.03.2019, 17:17
Помогаю со студенческими работами здесь

Не дать консольному приложению закрыться
Здравствуйте. Как ввести консольное окно в ожидание, т.е не дать ему закрыться. Это будет стим бот, который будет отправлять...

Передать аргумент консольному приложению
Как мне можно прописать самому название процесса в Process.GetProcessesByName(&quot;devenv&quot;); Чтобы можно было в консоли: ( ввести название...

Как привязать к консольному приложению иконку?
Как назначить иконку консольному приложению? Чтоб как нормальная программа выглядела.

Как подключить MS Access к консольному приложению?
Цель задания заключается в том чтобы подключить базу аксеса к С# консоли и написать программу тестирования на проверку данных. До этого...

Не могу подключить ссылку к консольному приложению
Всем привет скачал Microsoft ADO.NET Entity Framework 4.1 когда создаю форму могу добавить ссилку на ADODB а с консольного ее не видит в...


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

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

Новые блоги и статьи
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1 У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\ А в самом низу файла-профиля. . .
PowerShell и онлайн сервисы. Валюта (floatrates.com руб.)
iNNOKENTIY21 11.11.2025
PowerShell функция floatrates-rub Примеры вызова: # Указанная валюта 'EUR' floatrates-rub -Code 'EUR' # Список имеющихся кодов валют floatrates-rub -Available function floatrates-rub {
PowerShell и онлайн сервисы. Погода (RP5.ru)
iNNOKENTIY21 11.11.2025
PowerShell функция Get-WeatherRP5rss для получения погоды с сервиса RP5 Примеры вызова Get-WeatherRP5rss с указанием id 5484 — Москва (восток, Измайлово) и переносом строки:. . .
PowerShell и онлайн сервисы. Погода (wttr)
iNNOKENTIY21 11.11.2025
PowerShell Функция для получения погоды с сервиса wttr Примеры вызова: Погода в городе Омск с прогнозом на день, можно изменить прогноз на более дней, для этого надо поменять запрос:. . .
PowerShell и онлайн сервисы. Валюта (ЦБР)
iNNOKENTIY21 11.11.2025
# Получение курса валют function cbr (] $Valutes = @('USD', 'EUR', 'CNY')) { $url = 'https:/ / www. cbr-xml-daily. ru/ daily_json. js' $data = Invoke-RestMethod -Uri $url $esc = 27 . . .
И решил я переделать этот ноут в машину для распределенных вычислений
Programma_Boinc 09.11.2025
И решил я переделать этот ноут в машину для распределенных вычислений Всем привет. А вот мой компьютер, переделанный из ноутбука. Был у меня ноут асус 2011 года. Со временем корпус превратился. . .
Мысли в слух
kumehtar 07.11.2025
Заметил среди людей, что по-настоящему верная дружба бывает между теми, с кем нечего делить.
Новая зверюга
volvo 07.11.2025
Подарок на Хеллоуин, и теперь у нас кроме Tuxedo Cat есть еще и щенок далматинца: Хочу еще Симбу взять, очень нравится. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru