|
Модераторы: bsa |
|
шарлотта |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 55 Регистрация: 1.3.2017 Репутация: нет Всего: нет |
Здравствуйте! Нужно подключить динамическую библиотеку неявно и явно к программе в Visual 2008.
В динамической библиотеке в sort_mas_merge2.h файле указываю #pragma once #ifdef IS_CREATING_DLL #define IMPORT_EXPORT_TRIGER extern "C" __declspec(dllexport) #else #define IMPORT_EXPORT_TRIGER extern "C" __declspec(dllimport) #endif IMPORT_EXPORT_TRIGER void MergeSort(int *mas, int first, int last); в файле sort_mas_merge2.сpp находятся 2 функции - слияния и сортировки слиянием. Динамическая библиотека создается. Когда подключаю неявно, пишу #include "stdafx.h" #include "sort_mas_merge2.h" #include <iostream> #include <time.h> #include <conio.h> using namespace std; #pragma comment (lib, "sort_mas_merge2.lib") и выдает ошибку fatal error C1083: Не удается открыть файл include: sort_mas_merge2.h: No such file or directory. Почему возникает эта ошибка и что сделать для ее исправления? Когда подключаю явно, пишу #include "stdafx.h" #include <iostream> #include <windows.h> #include <time.h> #include <conio.h> using namespace std; void (*fun) (int*, int, int); в функции main HMODULE h = LoadLibrary(TEXT("sort_mas_merge2.d ll")); (FARPROC &) fun = GetProcAddress(h, "MergeSort"); if (h == NULL) { puts ("Ошибка"); } else { puts ("Библиотека подключена"); } и потом fun(mas, 0, n - 1); FreeLibrary(h); Выдает "Ошибка", т.е. подключения библиотеки не происходит. Что нужно исправить? Буду очень благодарна за помощь! |
|||
|
||||
vol4ek |
|
||||||
конь в пальто Профиль Группа: Участник Сообщений: 304 Регистрация: 1.5.2011 Где: Минск Репутация: нет Всего: 0 |
sort_mas_merge2.lib и sort_mas_merge2.h бросаете в папку проекта где .cpp и .h файлы? Добавлено через 2 минуты и 3 секунды
положите dll в одну папку с exe Добавлено через 3 минуты и 17 секунд
надеюсь это просто опечатка на форуме, а в коде все ок |
||||||
|
|||||||
шарлотта |
|
||||||
Шустрый Профиль Группа: Участник Сообщений: 55 Регистрация: 1.3.2017 Репутация: нет Всего: нет |
Нет, динамическая библиотека находится в другой папке.
А возможно ли подключение, когда библиотека и проект находятся в разных папках?
да, здесь все нормально |
||||||
|
|||||||
vol4ek |
|
||||||
конь в пальто Профиль Группа: Участник Сообщений: 304 Регистрация: 1.5.2011 Где: Минск Репутация: нет Всего: 0 |
прописать полностью путь к dll. есть еще вариант с регистрацией dll в системе Добавлено через 6 минут и 16 секунд
вы меня не поняли наверное. у Вас есть проект вашей dll. после компиляции получились файлы mydll.dll, mydll.lib, mydll.h файлы mydll.lib и mydll.h скопируйте в папку проекта вашего приложения (туда, где лежат .cpp и .h файлы) потом уже используйте
|
||||||
|
|||||||
шарлотта |
|
||||
Шустрый Профиль Группа: Участник Сообщений: 55 Регистрация: 1.3.2017 Репутация: нет Всего: нет |
То есть в случае неявного подключения я должна в свойствах в Компоновщике указать Общие -Дополнительные каталоги библиотек - путь до dll и в Компоновщик -Ввод - Дополнительные зависимости - имя dll библиотеки? Выдает ошибку fatal error LNK1107: недопустимый или поврежденный файл: не удается прочитать по 0x2F8
Здесь тоже аналогичный вопрос, возможно ли подключение, когда библиотека и проект находятся в разных папках? Это сообщение отредактировал(а) шарлотта - 2.3.2017, 21:19 |
||||
|
|||||
vol4ek |
|
|||
конь в пальто Профиль Группа: Участник Сообщений: 304 Регистрация: 1.5.2011 Где: Минск Репутация: нет Всего: 0 |
нет. полный путь при явном подключении. при неявном либо dll находится в одной папке с exe который ее использует либо в путях поиска по умолчанию (переменная PATH в винде). также можете зарегистрировать dll в системе regsvr32 из консоли либо DllRegisterServer() из программы. Может есть еще какие-то способы но мне о них неизвестно |
|||
|
||||
шарлотта |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 55 Регистрация: 1.3.2017 Репутация: нет Всего: нет |
Да, не так написала. В случае явного подключения выдает такую ошибку
|
|||
|
||||
vol4ek |
|
|||
конь в пальто Профиль Группа: Участник Сообщений: 304 Регистрация: 1.5.2011 Где: Минск Репутация: нет Всего: 0 |
вот что я имею ввиду полного пути к dll при явном подключении
|
|||
|
||||
шарлотта |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 55 Регистрация: 1.3.2017 Репутация: нет Всего: нет |
В этом случае все равно выводит "Ошибка"
|
|||
|
||||
vol4ek |
|
|||
конь в пальто Профиль Группа: Участник Сообщений: 304 Регистрация: 1.5.2011 Где: Минск Репутация: нет Всего: 0 |
интересно. дайте код dll и приложения
|
|||
|
||||
шарлотта |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 55 Регистрация: 1.3.2017 Репутация: нет Всего: нет |
Это создание библиотеки
Это сообщение отредактировал(а) шарлотта - 10.3.2017, 17:12 |
|||
|
||||
шарлотта |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 55 Регистрация: 1.3.2017 Репутация: нет Всего: нет |
Заголовочный файл
Это сообщение отредактировал(а) шарлотта - 10.3.2017, 17:12 |
|||
|
||||
шарлотта |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 55 Регистрация: 1.3.2017 Репутация: нет Всего: нет |
Приложение, вызывающее библиотеку
Это сообщение отредактировал(а) шарлотта - 10.3.2017, 17:12 |
|||
|
||||
vol4ek |
|
|||
конь в пальто Профиль Группа: Участник Сообщений: 304 Регистрация: 1.5.2011 Где: Минск Репутация: нет Всего: 0 |
||||
|
||||
vol4ek |
|
|||
конь в пальто Профиль Группа: Участник Сообщений: 304 Регистрация: 1.5.2011 Где: Минск Репутация: нет Всего: 0 |
явное подключение в папке Release dll и exe
Присоединённый файл ( Кол-во скачиваний: 6 ) usedll.rar 254,77 Kb |
|||
|
||||
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |