Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/29: Рейтинг темы: голосов - 29, средняя оценка - 4.86
1 / 1 / 0
Регистрация: 18.07.2010
Сообщений: 7

Импорт dll

27.07.2010, 19:35. Показов 5615. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем здрасте)
Суть вопроса такова:
Мне надо импортировать в создаваемую dll динамические библиотеки из другой программы, чтобы можно было в своей dll использовать их функции.
Если не трудно, хотелось бы на простом примере увидеть как это сделать, в файлах .h и .cpp.
Например, импортировать s.dll и функцию ААА и b.dll. и функцию BBB.
Заранее спасибо, просто я нуб в этом и никак не получается.
Использую VS 10.
1
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.07.2010, 19:35
Ответы с готовыми решениями:

Импорт DLL библиотеки
как подключить к проекту DLL библиотеку и использивать функции в ней?

Импорт DLL из Delphi в Visual C++
Всем доброго времени суток! У меня появилась необходимость импортировать в проект библиотеку собранную в делфи. Есть DLL файл и больше...

Ошибка об отсутствии MSVCP140D.dll, ucrtbased.dll, CONCRT140D.dll, VCRUNTIME140D.dll
Добрый день, товарищи. Возникла проблема. Делаю программу с использованием openCV 3.1 на Visual Studio 2013. При компиляции выдает ошибку...

6
1080 / 1007 / 107
Регистрация: 28.02.2010
Сообщений: 2,889
27.07.2010, 20:28
Пример для функции rtcSin из msvbvm60.dll.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <windows.h>
#include <stdio.h>
 
int main()
{
    HMODULE hModule;
    double (*rtcSin)(double);
    double result;
    
    printf("rtcSin Example\n\n");
 
    hModule=LoadLibrary("msvbvm60.dll");
    rtcSin=(double (*)(double))GetProcAddress(hModule,"rtcSin");
 
    result=(*rtcSin)(1.57);
    printf("Sin(pi/2)=%lf\n", result);
 
    return 0;
}
Добавлено через 14 минут
Второй вариант.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <windows.h>
#include <stdio.h>
 
typedef double (*rtcdouble)(double);
 
int main()
{
    HMODULE hModule;
    rtcdouble rtcSin;
    double result;
    
    printf("rtcSin Example\n\n");
 
    hModule=LoadLibrary("msvbvm60.dll");
    rtcSin=(rtcdouble)GetProcAddress(hModule,"rtcSin");
 
    result=rtcSin(1.57);
    printf("Sin(pi/2)=%lf\n", result);
 
    return 0;
}
Про указатели на функцию читаем здесь: http://www.cyberguru.ru/progra... age67.html
1
1 / 1 / 0
Регистрация: 18.07.2010
Сообщений: 7
27.07.2010, 20:39  [ТС]
Спасибо, я попробую, но дело в том, что мне надо добавить не стандартную библиотеку винды с ее функцией, а библиотеку приложения.
И желательно применяя __declspec(dllimport), поскольку я только учусь и именно эти ключевые слова используются в VS 10 по умолчанию при создании проекта с помощью конструктора)
Но все равно, спасибо)
0
4 / 0 / 0
Регистрация: 25.12.2019
Сообщений: 60
25.11.2020, 00:01
Хочу дополнить. Возможно, потребуется использовать LoadLibraryA вместо LoadLibrary.

И пример импорта для функции с двумя переменными.

C++
1
2
3
4
5
6
7
8
// Dll Export
 
#include "stdafx.h"
 
extern "C" __declspec(dllexport) double Add( double left, double right )
{
    return left + right;
}
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
// Dll Import
 
#include <windows.h> // for HMODULE
#include <iostream> // for cout
#include <conio.h> // for _getch()
 
using namespace std; // for cout
 
typedef double (*rtcdouble)(double, double);
 
int _tmain()
{
    HMODULE hModule;
    rtcdouble rtcAdd;
    
    printf("rtcAdd Example\n\n");
 
    hModule=LoadLibraryA("test_DLL.dll");
    rtcAdd=(rtcdouble)GetProcAddress(hModule,"Add");
 
    cout << "A + B = " << rtcAdd(1.2, 2.3) << endl;
 
    _getch(); // pause
 
    return 0;
}
0
Эксперт С++
 Аватар для _lunar_
3701 / 2836 / 451
Регистрация: 03.05.2011
Сообщений: 5,193
Записей в блоге: 21
30.11.2020, 12:52

Не по теме:

Цитата Сообщение от Lex248 Посмотреть сообщение
Хочу дополнить.
спустя 10 лет..



Цитата Сообщение от Lex248 Посмотреть сообщение
Возможно, потребуется использовать LoadLibraryA вместо LoadLibrary.
и в чём по вашему разница между LoadLibraryA и LoadLibrary?
вы в курсе, что LoadLibrary это определение, значение которого выбирается от выбранной в проекте кодировки?

чтобы не парится и именем функции в MS придумали макрос TEXT("").
0
4 / 0 / 0
Регистрация: 25.12.2019
Сообщений: 60
30.11.2020, 16:31
_lunar_, главное, что препроцессор в курсе.

Здесь подробно описано:
https://stackoverflow.com/ques... -a-lpctstr
0
70 / 14 / 4
Регистрация: 10.07.2018
Сообщений: 314
09.07.2023, 22:38
C++
1
2
3
4
5
6
7
8
9
10
#pragma once
 
#ifdef MYDLL_EXPORTS
#define MYDLL_API __declspec(dllexport)
#else
#define MYDLL_API __declspec(dllimport)
#endif
 
extern "C" MYDLL_API void AAA();
extern "C" MYDLL_API void BBB();

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 "mydll.h"
#include <iostream>
#include <Windows.h>
 
typedef void(*AAA_func)();
typedef void(*BBB_func)();
 
void AAA() {
    HMODULE sDll = LoadLibraryA("s.dll");
    if (sDll != NULL) {
        AAA_func AAA_fun = (AAA_func)GetProcAddress(sDll, "AAA");
        if (AAA_fun != NULL) {
            AAA_fun();
            FreeLibrary(sDll);
        }
    }
}
 
void BBB() {
    HMODULE bDll = LoadLibraryA("b.dll");
    if (bDll != NULL) {
        BBB_func BBB_fun = (BBB_func)GetProcAddress(bDll, "BBB");
        if (BBB_fun != NULL) {
            BBB_fun();
            FreeLibrary(bDll);
        }
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.07.2023, 22:38
Помогаю со студенческими работами здесь

Использование функций DLL из другой DLL
Ребята подскажите имеется hscli.DLL hscli.LIB и hscli.H , собираю свою DLL-ку , которая использует функции hscli.DLL мои...

Кто может поделиться файлами ogg.dll, vorbis.dll и vorbisfile.dll - 32-х и 64-битными версиями?
Движок перевожу на платформу Win64 и нужно, чтобы разрядность ЕХЕ и DLL совпадали, а в интернете искал 64-битные версии ogg.dll, vorbis.dll...

Порядковый номер 354 не найден в библиотеке DLL LIBEAY32.DLL
Всем привет, вылезает ошибка при компиляции приложения &quot;Порядковый номер 354 не найден в библиотеке DLL LIBEAY32.DLL&quot;. Работаю со...

Windows I/o без Kernel32.dll и Advapi32.dll
Добрый день. Необходимо в Windows XP SP3 распечатать в стандартный поток &quot;some text here&quot; без прямого или косвенного использования...

При компиляции DLL-проекта не создается DLL-ка
Добрый день. создал в Visual Studio 2010 проект C+= типа DLL. В файл dllmain.cpp вставил вот такой код: // test.cpp: определяет...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG-файла с альфа-каналом с помощью библиотеки SDL3_image на Android
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru