С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
136 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,894
1

Подключение dll файла приводит к ошибке

06.07.2020, 13:32. Показов 1390. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте,

Пытаюсь подключить библиотеку OCILIB в Visual Studio 2017:

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
#include <Windows.h>
 
 
#include <D:/Oracle distibute/OCILIB/DLL_LIB/ocilib.h>                           // VS путь находит
#pragma comment(lib, "D:/Oracle distibute/OCILIB/DLL_LIB/ociliba.lib")   // VS путь находит
 
 
int main()
{
HINSTANCE hMyDLL_ocilib = LoadLibraryW(L"D://Oracle distibute//OCILIB//DLL_LIB//ociliba.dll");  //Пытаюсь как бы подключить саму dll
 
 
if (hMyDLL_ocilib == NULL)
{
std::cout << "LoadLibrary Error" << endl;
}
 
// ДО ЭТОГО МОМЕНТА - если запустить, то ошибок не возникает
// Но как только я подключаю уже функцию из самой библиотеки:
 
 
POCI_ERROR  err_handler=0;
int     mode1=0;
 
OCI_Initialize(err_handler, NULL , mode1);
 
//То возникает ошибка, но ошибка не в проверке hMyDLL_ocilib == NULL, а просто появляется окно в котором windows сообщает, что:
}
Не удается продолжить выполнение кода, по сколько система не обнаружила ociliba.dll. Для устранения этой проблемы попробуйте переустановить программу
Что же я не так сделал.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.07.2020, 13:32
Ответы с готовыми решениями:

Запись в ДБ приводит к ошибке 500
НЕПОЙМУ В ЧЕМ ТУТ ПРОБЛЕММА - ПИШЕТ ОШИБКА 500 &lt;% Dim strSQL, Conn Set Conn =...

Использование BigInteger приводит к ошибке
package taskc; import java.util.Scanner; import java.io.PrintWriter; import...

timeSetEvent приводит к 0xC0000005 ошибке
Доброго времени суток! #include &lt;stdio.h&gt; #include &lt;Windows.h&gt; void timeProc(UINT uID,...

Present у LPDIRECT3DSWAPCHAIN9 приводит к ошибке
Кратко: Есть главное окно приложения и есть второе окно приложения. Рисую в главное и во...

6
Эксперт CЭксперт С++
5118 / 4558 / 854
Регистрация: 07.10.2015
Сообщений: 9,462
06.07.2020, 13:41 2
Optimus11, а загрузить DLL мало. Надо еще получить адрес функции при помощи GetProcAddress()
1
2710 / 864 / 327
Регистрация: 10.02.2018
Сообщений: 2,044
06.07.2020, 15:25 3
Лучший ответ Сообщение было отмечено Optimus11 как решение

Решение

Строчки 4 и 5 как бы намекают на статическое связывание с библиотекой, поэтому LoadLibraryW тут вообще не нужен.
При статическом связывании библиотека загружается автоматически в момент запуска программы.
Если программа не смогла её загрузить, то выдаётся ошибка и программа не запускается.
Нужно положить библиотеку (ociliba.dll) в такую папку, где она будет доступна запускаемой программе.
Обычно библиотеку кладут рядом с исполняемым файлом. Или можно разместить библиотеку в каталоге, который прописан в PATH, что бы она смогла найтись из любого точки.
1
Эксперт CЭксперт С++
5118 / 4558 / 854
Регистрация: 07.10.2015
Сообщений: 9,462
06.07.2020, 15:27 4
Согласен... DLL просто не найдена во время исполнения.
1
136 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,894
06.07.2020, 16:28  [ТС] 5
Цитата Сообщение от Ygg Посмотреть сообщение
Строчки 4 и 5 как бы намекают на статическое связывание с библиотекой, поэтому LoadLibraryW тут вообще не нужен.
Спасибо! Заработало.
Получается, когда dll используеться в связке с lib, то получать адрес функции при помощи GetProcAddress() - тоже не нужно ?
0
Эксперт С++
8972 / 4318 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
06.07.2020, 16:36 6
Цитата Сообщение от Optimus11 Посмотреть сообщение
Получается, когда dll используеться в связке с lib, то получать адрес функции при помощи GetProcAddress() - тоже не нужно ?
тебя интересует библиотека импорта
1
Эксперт CЭксперт С++
5118 / 4558 / 854
Регистрация: 07.10.2015
Сообщений: 9,462
06.07.2020, 16:37 7
Optimus11, нет, не нужно. Фактически, lib предоставляет список адресов используемых функций.
Если lib не подключается, то тогда надо искать адреса самостоятельно.
1
06.07.2020, 16:37
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.07.2020, 16:37
Помогаю со студенческими работами здесь

Почему макрокоманда ЗадатьСвойство приводит к ошибке?
Для скрытия Поля в Форме1 задаю в событии кнопки Формы2 макрокоманды ВыделитьОбъект (Форма1) и...

Быстрое переключение фрагментов приводит к ошибке
Всем привет. Есть нижний тап бар, при быстром клики по 2, приложение падает, с ошибкой что...

Создание нескольких объектов приводит к ошибке
for(int i=1,j=0;i&lt;22;i++) for(j=1;j&lt;32;j++) switch (MCard){ ...

sh404SEF создаёт cookies и приводит к 400 ошибке
Приветствую вас друзья! Столкнулся с проблемой ошибки 400... перекопал кучу статей, потратил...

Изменение ключевых полей в таблице приводит к ошибке
Всем привет, пишу я приложение для работы с БД . ( БД на Access, использую ADOConnection, ADOTable,...

ASP + акцессовская база. Редактирование приводит к ошибке.
Дело вот какое. Есть сайт, есть акцессовская база. Данные из базы отображаются на сайте. Если...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru