Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 5.00/12: Рейтинг темы: голосов - 12, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 10.02.2020
Сообщений: 117

Как подключить dll к проекту?

14.04.2020, 18:43. Показов 3109. Ответов 38
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
есть проект dll и прога к которому надо подключить этот dll неявно. полчаса сижу не могу разобраться как это сделать.
И еще вопрос по dll.
Можно ли как то вшить этот dll в программу чтобы при переносе программы на другой пк(без dll) он работал?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.04.2020, 18:43
Ответы с готовыми решениями:

Как подключить dll на C# к проекту (dll) на С++
Подскажите, пожалуйста, как подключить dll на C# к проекту (dll) на С++. В интернете много примеров, где показаны примеры по подключению...

Как подключить dll к проекту?
Ребят помогите пожалуйста, если сможете а то я уже 3 дня долбаюсь чет никак не могу разобраться с этими dll. вот я написал код dll-ки ...

Как подключить x86 dll библиотеку к x64 проекту
Планировал написать дополнение к моему коду на ассемблере. Но возникла проблема. Компилятор x64 в студии не поддерживает ассемблер. Решил...

38
0 / 0 / 0
Регистрация: 10.02.2020
Сообщений: 117
26.04.2020, 14:22  [ТС]
Студворк — интернет-сервис помощи студентам
oleg-m1973, сохранил на диск Dи попытался загрузить но выдает ошибку 126
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
    DWORD   dwErr;
 
    HINSTANCE hDll = LoadLibrary("mydll_cp.dll");    // находится в D:\\
 
    if (hDll != NULL)
    {
        int i = 1;
    }
    else
    {
        dwErr = GetLastError();
    }
 
    // получаем указатель на фу-ю
    SETKEYBOARDHOOK SetKeyboardHook = (SETKEYBOARDHOOK)GetProcAddress(hDll, "SetKeyboardHook");
 
    if (SetKeyboardHook != NULL)
    {
        int i = 1;
    }
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
26.04.2020, 14:25
Цитата Сообщение от poihgvc Посмотреть сообщение
сохрани на диск Dи попытался загрузить но выдает ошибку 126
Эта дллка зависит от каких-то других, которых нет
0
0 / 0 / 0
Регистрация: 10.02.2020
Сообщений: 117
26.04.2020, 14:27  [ТС]
oleg-m1973, нет
код dll-ки
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// dllmain.cpp : Defines the entry point for the DLL application.
#include "pch.h"
#include <Windows.h>
#include <stdio.h>
 
#pragma data_seg(".hdata")                       // секция в памяти общая для всех
HINSTANCE hi = NULL;
#pragma data_seg()                               // конец секции
#pragma comment(linker, "/section:.hdata,rws")   // даем права этой секции
 
#ifdef _cplusplus
 
#define EXPORT extern "C" _declspec(dllexport)
 
#else
 
#define EXPORT _declspec (dllexport)
 
#endif // _cplusplus
 
EXPORT BOOL SetKeyboardHook(void);  // экспортируемая функция
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
26.04.2020, 14:41
Цитата Сообщение от poihgvc Посмотреть сообщение
oleg-m1973, нет
код dll-ки
Стандартный рантайм - msvcrt и т.д. Посмотри при помощи depends
0
0 / 0 / 0
Регистрация: 10.02.2020
Сообщений: 117
26.04.2020, 15:05  [ТС]
oleg-m1973, ошибка при открытии dll
dll который я подключаю я просто сделал debug. а не Release. из-за этого можеть быть ошибка?
Миниатюры
Как подключить dll к проекту?  
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
26.04.2020, 15:13
Цитата Сообщение от poihgvc Посмотреть сообщение
oleg-m1973, ошибка при открытии dll
dll который я подключаю я просто сделал debug. а не Release. из-за этого можеть быть ошибка?
Дебажную вообще не надо никуда таскать, сделай релизную.
А выглядит, будто ты криво сохранил эту дллку. Сравни с исходной.
0
0 / 0 / 0
Регистрация: 10.02.2020
Сообщений: 117
26.04.2020, 15:39  [ТС]
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
Сравни с исходной
исходная открывается
Миниатюры
Как подключить dll к проекту?  
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
26.04.2020, 15:41
Цитата Сообщение от poihgvc Посмотреть сообщение
исходная открывается
Просто сравни размер файлов и содержимое
0
0 / 0 / 0
Регистрация: 10.02.2020
Сообщений: 117
26.04.2020, 15:47  [ТС]
oleg-m1973, размер стал на 10кб больше. Содержимое как сравнить не знаю
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
26.04.2020, 16:21
Цитата Сообщение от poihgvc Посмотреть сообщение
oleg-m1973, размер стал на 10кб больше. Содержимое как сравнить не знаю
Покажи, как сохраняешь из ресурсов
0
0 / 0 / 0
Регистрация: 10.02.2020
Сообщений: 117
26.04.2020, 16:32  [ТС]
oleg-m1973,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
void UploadDLL(void)
{
    HMODULE hMod = GetModuleHandle(NULL);
    HRSRC   hRes = ::FindResource(hMod, MAKEINTRESOURCE(IDR_RCDATA1), RT_RCDATA);
 
    HGLOBAL hGlob = LoadResource(hMod, hRes);
 
    BYTE* lpbAray = (BYTE*)LockResource(hGlob);
 
    DWORD dwSize = SizeofResource(hMod, hRes);
 
    DWORD           NOfBytes;
    OVERLAPPED      ovlp;     // структура для асинхронного ввода вывода данных
 
    ovlp.OffsetHigh = 0;
    ovlp.hEvent = NULL;
    ovlp.Offset = dwSize;  // смещение от начала файла(для продолжения записи с конца)
 
    HANDLE hFile = CreateFile("D:\\mydll_cp.dll", GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
    
    WriteFile(hFile, lpbAray, dwSize, &NOfBytes, &ovlp);
}
Добавлено через 7 минут
oleg-m1973, мне кажется ошибка с строке 17

Добавлено через 1 минуту
просто я код записи скопировал из дугой части а там с конца надо было запись делать а здесь этого ненадо
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
26.04.2020, 16:34
Цитата Сообщение от poihgvc Посмотреть сообщение
oleg-m1973, мне кажется ошибка с строке 17
Здесь вообще overlapped использовать не надо. Просто передай nullptr последним параметром, во WriteFile.
А dwSize совпадает с размером dll?
1
0 / 0 / 0
Регистрация: 10.02.2020
Сообщений: 117
26.04.2020, 16:37  [ТС]
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
А dwSize совпадает с размером dll?
да.
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
26.04.2020, 16:38
Цитата Сообщение от poihgvc Посмотреть сообщение
да.
WriteFile(hFile, lpbAray, dwSize, &NOfBytes, nullptr);
1
0 / 0 / 0
Регистрация: 10.02.2020
Сообщений: 117
26.04.2020, 16:38  [ТС]
oleg-m1973, теперь размер тоже совпадает но ошибка та же 126
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
26.04.2020, 16:41
Цитата Сообщение от poihgvc Посмотреть сообщение
oleg-m1973, теперь размер тоже совпадает но ошибка та же 126
::CloseHandle(hFile) сделай в конце
1
0 / 0 / 0
Регистрация: 10.02.2020
Сообщений: 117
26.04.2020, 16:49  [ТС]
oleg-m1973, все таже ошибка

Добавлено через 6 минут
oleg-m1973, у меня dll в диске D. Разве ненадо писать LoadLibrary("D://mydll_cp.dll");
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
26.04.2020, 16:51
Лучший ответ Сообщение было отмечено poihgvc как решение

Решение

Цитата Сообщение от poihgvc Посмотреть сообщение
oleg-m1973, все таже ошибка
В depends загружается?
У меня вот так работает
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
int main()
{
    HRSRC hRes = ::FindResource(NULL, MAKEINTRESOURCE(IDR_RCDATA1), RT_RCDATA);
    DWORD dwSize = SizeofResource(NULL, hRes);
    HGLOBAL hGlob = LoadResource(NULL, hRes);
 
    auto *lpbAray = ::LockResource(hGlob);
 
    HANDLE hFile = CreateFile("D:\\test.dll", GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
 
    DWORD dwWritten;
    WriteFile(hFile, lpbAray, dwSize, &dwWritten, nullptr);
 
    ::CloseHandle(hFile);
 
    auto hLib = ::LoadLibrary("D:\\test.dll");
    if (!hLib)
        std::cout << "ERROR: " << ::GetLastError();
    else
    {
        std::cout << "OK" << std::endl;
        ::FreeLibrary(hLib);
    }
    return 0;
}
Добавлено через 46 секунд
В CreateFile сделай CREATE_ALWAYS вместо OPEN_ALWAYS
1
0 / 0 / 0
Регистрация: 10.02.2020
Сообщений: 117
26.04.2020, 16:51  [ТС]
oleg-m1973, все загрузилось
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.04.2020, 16:51

Подключить к проекту на C++ DLL написанный на C#
Здравствуйте. Есть ли возможность подключить к проекту на C++, DLL написанный на C#? Мне нужно из этого DLL несколько функций...

Как подключить библиотеку к проекту
Не могу понять почему не работает. Папку заголовков и папку с библиотекой выбрал, линковщику добавил cryptopp.lib, cryptopp.lib и...

Как подключить ресурс к проекту на VS
Как в проект подключить XML файл, да и как потом открыть чтоб вытянуть из него данные?

Как подключить obj-файл к проекту?
#include &lt;stdio.h&gt; #define SIZE 100 extern &quot;C&quot; { char* __fastcall delete_spaces(char* a); } int main() ...

Как подключить к проекту OpenGL и GLUT ?
В С++ я новичок, перехожу на него с С#, так что многого еще не понимаю. Необходимо подключить к моему классу GameWindow OpenGL и GLUT....


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

Или воспользуйтесь поиском по форуму:
39
Ответ Создать тему
Новые блоги и статьи
Программное добавление префикса в нумерацию документов
Maks 27.10.2026
Реализация из решения ниже выполнена в самописной конфигурации на БСП (помощь начинающему коллеге). Задача: Программно добавить префикс в нумерацию документов. Решение: В модуле объекта. . .
После закрытия оутлука продолжает висеть процесс в диспетчере задач
Maks 27.10.2026
С недавнего времени в продакшене возникла проблема: при закрытии оутлука в диспетчере задач продолжал висеть процесс outlook. exe. Проблема возникла после установки MS Office 2021 LTSC на машинах, под. . .
Baragoz - DPS/HPS бот для WoW 3.3.5a, многоязычный
AmbA 26.10.2026
Хотите ещё ботов? У меня есть один! А я пока отдохну от него. https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=12062&stc=1&d=1793007952 Инструкция внутри. https:/ / youtu. be/ VpfFZSUDGnQ. . .
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности. Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru