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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.93
NatNiM
0 / 0 / 0
Регистрация: 01.05.2009
Сообщений: 68
#1

Подключить dll - C++

26.07.2012, 11:54. Просмотров 1862. Ответов 13
Метки нет (Все метки)

Здравствуйте.
Есть dll, в ней несколько функций, необходимо добавить еще одну, чтобы выводила окно с приветствием.
И затем написать win - проект, который будет использовать эту функцию.
В нете нашел информацию, как подключать dll при наличии lib, а если его не будет (lib-а), как тогда подключать и использовать функции?
Спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.07.2012, 11:54     Подключить dll
Посмотрите здесь:

Как подключить DLL - C++
Доброе время суток уважаемые участники Пытаюсь написать программу по работе с усб мостом, столкнулся с программной проблемой :)...

Подключить dll к программе - C++
Здравствуйте. Нужна помощь новичку. У меня есть файл, к примеру biblioteka.dll. Каким оброазом можно подключить эту библиотеку к моей...

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

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

Подключить библ. bass.dll - C++
Дорогие друзья, прошу помочь! И заранее всех откликнувшихся благодарю! Есть у меня библиотека для работы со звуком: и bass.h,и bass.lib,и...

как подключить dll и lib SDL - C++
как подключить к проекту(в Visual Studio 2010) библиотеку SDL?// есть SDL.dll, SDL.lib и SDLmain.lib и еще папка с include'ами

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
titans2011
296 / 257 / 43
Регистрация: 27.09.2010
Сообщений: 1,058
26.07.2012, 12:02     Подключить dll #2
В вашем случае если есть только dll, нужно использовать явное связывание.
В том месте, где требуется вызвать функцию, нужно написать примерно следующее:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
            HMODULE hMod = LoadLibrary("test.dll");
            if(!hMod)
            {
                MessageAboutError(GetLastError());
                return;
            }
            void (*ptr)(тут прописываем параметры, которая принимает функция);
            ptr = (void (*)(тут прописываем параметры, которая принимает функция)) GetProcAddress(hMod,"название функции из библиотеки");
            if(!ptr)
            {
                MessageAboutError(GetLastError());
                return;
            }
            ptr("Передаем параметры в функцию (если есть), через указатель на функцию");
            FreeLibrary(hMod);//освобождаем библиотеку
Avazart
Эксперт С++
7122 / 5299 / 273
Регистрация: 10.12.2010
Сообщений: 23,454
Записей в блоге: 17
26.07.2012, 13:22     Подключить dll #3
Попробывать сгенерить с помощью implib, impdef

Dynamic-Link Library: Теория + Практика
http://www.cyberforum.ru/blogs/131347/blog478.html
http://www.cyberforum.ru/blogs/131347/
NatNiM
0 / 0 / 0
Регистрация: 01.05.2009
Сообщений: 68
26.07.2012, 17:29  [ТС]     Подключить dll #4
Avazart, нужно как раз имея только dll (к сожалению).
А можно какой-нибудь пример, я пробую, ругается на HMODULE.
И не пойму как в dll описать запуск win-окна.
Avazart
Эксперт С++
7122 / 5299 / 273
Регистрация: 10.12.2010
Сообщений: 23,454
Записей в блоге: 17
26.07.2012, 18:03     Подключить dll #5
Повторяю
Цитата Сообщение от Я
Попробывать сгенерить с помощью implib, impdef
Добавлено через 10 минут
Код
impdef  x.def x.dll // Результат x.def (заглядываем в него, правим если необходимо)
implib  x.lib x.def // Результат x.lib
Добавлено через 2 минуты
А можно какой-нибудь пример, я пробую, ругается на HMODULE.
Я же привел??? Первая ссылка!!

А еще нужно обязательно иметь h-файл к ваше dll или хотябы знать объявление "вытаскиваемых ф-ций"
NatNiM
0 / 0 / 0
Регистрация: 01.05.2009
Сообщений: 68
27.07.2012, 08:57  [ТС]     Подключить dll #6
Пробовал пример по первой ссылке, ошибка при компилировании dll:
C++
1
2
3
4
5
6
#include "DLL.h" // создание этого заголовочного файла будет описано ниже
//---------------------------------------------------------------------------
void ShowSum(const int A, const int B)
{
  ShowMessage(IntToStr(A) + " + " + IntToStr(B) + " = " + IntToStr(A + B));
}
ругается на
C++
1
ShowMessage
,
C++
1
IntToStr
.
Файл def со списком экспортированных функций есть.
Avazart
Эксперт С++
7122 / 5299 / 273
Регистрация: 10.12.2010
Сообщений: 23,454
Записей в блоге: 17
27.07.2012, 09:01     Подключить dll #7
Ну так уберите его или подключите vcl.h
Файл def со списком экспортированных функций есть.
Ну так сделайте из него lib
titans2011
296 / 257 / 43
Регистрация: 27.09.2010
Сообщений: 1,058
27.07.2012, 09:21     Подключить dll #8
Я забыл сказать, что это пример подключение не для консоли, а на WinApi, попробуйте подключить Windows.h
NatNiM
0 / 0 / 0
Регистрация: 01.05.2009
Сообщений: 68
27.07.2012, 09:36  [ТС]     Подключить dll #9
В дальнейшем понадобится эта библиотека, а как можно подключить ее (Studio 2010), где-то нужно задать ссылку?
Avazart
Эксперт С++
7122 / 5299 / 273
Регистрация: 10.12.2010
Сообщений: 23,454
Записей в блоге: 17
27.07.2012, 09:51     Подключить dll #10
Все с меня хватит... я удаляюсь с этой темы, меня поражает не внимательность ТС или/и тупой игнор ссылок которые я привел.
kravam
быдлокодер
1693 / 880 / 44
Регистрация: 04.06.2008
Сообщений: 5,441
27.07.2012, 10:12     Подключить dll #11
Чтобы загрузить dll в память нужно загрузить dll в память:

C++
1
LoadLibrary (ima_modula);
Возвернёт дескриптор модуля (адрес загрузки), насколько я помню
NatNiM
0 / 0 / 0
Регистрация: 01.05.2009
Сообщений: 68
30.07.2012, 16:04  [ТС]     Подключить dll #12
Вот, к примеру часть кода cpp для dll:

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
#include "stdafx.h"
#include <Windows.h>
#include <stdio.h>
#include <iostream>
#include <stdio.h>
 
using namespace std;
 
extern "C++" __declspec(dllexport) void Window()
 {
 
  HINSTANCE instanceHandle;
  HWND MainWindowHandle = 0;
  MainWindowHandle = CreateWindow(
                            LPCWSTR(sum("lib.dll").c_str()),
                            LPCWSTR(sum("lib.dll").c_str()),
                            WS_OVERLAPPEDWINDOW,
                            CW_USEDEFAULT, 
                            CW_USEDEFAULT,
                            CW_USEDEFAULT,
                            CW_USEDEFAULT,
                            0,
                            0, 
                            instanceHandle,
                            0);
 }
И вот я пытаюсь загрузить ее:

C++
1
2
3
4
5
6
7
8
HMODULE hModule = LoadLibrary(TEXT("dtcd_01m_k1_3x.dll"));
typedef int ( *Wind)(); 
Wind lpClientInit = (Wind)GetProcAddress(hModule,"Window");
lpClientInit();
FreeLibrary(hModule);
 
Вылетает ошибка на предпоследней строчке.
Подскажите, пожалуйста, что не так делаю.
novi4ok
551 / 504 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
30.07.2012, 16:10     Подключить dll #13
Цитата Сообщение от kravam Посмотреть сообщение
Чтобы загрузить dll в память нужно загрузить dll в память:

C++
1
LoadLibrary (ima_modula);
Возвернёт дескриптор модуля (адрес загрузки), насколько я помню
уточно: не адрес загрузки, а HANDLE

Добавлено через 3 минуты
C++
1
2
3
4
5
Wind lpClientInit = (Wind)GetProcAddress(hModule,"Window");
if (lpClientInit == NULL){
   int errorCode = GetLastError();
} else {
// все хорошо
и посмотреть, чему равен этот errorCode
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.07.2012, 18:05     Подключить dll
Еще ссылки по теме:

Как подключить пользовательскую DLL к приложению - C++
Добрый вечер! Я первый раз пишу dll. Вот ее текст: My.cpp: #include&lt;iostream&gt; #include &quot;My.h&quot; using namespace std; namespace...

Как подключить библиотеку i7000.dll? - C++
у меня есть библиотека i7000.dll библиотека необходимая для работы с com портами все остальное работает нормально а эта работает только с 3...

Подключить файл - C++
Доброго времени суток. Подскажите пож-та хорошую статью или информацию о том как можно подключить файл к программе на С, файл имеет...

Что нужно подключить? - C++
#include &lt;boost/serialization/string.hpp&gt; #include &lt;boost/serialization/map.hpp&gt; #include &lt;boost/archive/binary_oarchive.hpp&gt; ...


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

Или воспользуйтесь поиском по форуму:
NatNiM
0 / 0 / 0
Регистрация: 01.05.2009
Сообщений: 68
30.07.2012, 18:05  [ТС]     Подключить dll #14
вот этому равен: -858993460

Добавлено через 1 час 45 минут
и что это значит?
Yandex
Объявления
30.07.2012, 18:05     Подключить dll
Ответ Создать тему
Опции темы

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