С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/21: Рейтинг темы: голосов - 21, средняя оценка - 4.71
1 / 1 / 1
Регистрация: 27.06.2014
Сообщений: 74

Вызов Dll-фий в другой Dll

24.10.2014, 12:39. Показов 4451. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
не получается дернуть dll в другой dll. Подскажите, как должен происходить вызов dll1 в dll2 ?

(псевдокод)

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
dll1.cpp
{
  int func1(int x)
{
 return x * x;
}
}
 
 
dll2.cpp
{
  int func2(int x)
{
   return func1(x); //???????
}
}
 
 
main
{
   call dll2.func2();
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.10.2014, 12:39
Ответы с готовыми решениями:

Вызов dll ресурсов в dll
Помогите пожалуйста, вот такого рода проблемка вышла: Есть у меня dll и есть необходимость вызвать ресурс в потоке dll файла, который...

Вызов dll из dll -> request example
Вызывающий код void (*dllHelloWorld) (void); //ok LPCTSTR s = L"dll.dll"; //ok HINSTANCE hlib = LoadLibrary(s); //ok ...

Вызов управляемой DLL
Приветствую. Только-только начал учить С++, поэтому прошу прощения заранее, если вопрос глупый. По данной схеме сделал в консольном...

8
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,531
Записей в блоге: 1
24.10.2014, 12:46
грузишь и вызываешь! В чём проблема?
В коде dll2 загружаешь dll1
0
1 / 1 / 1
Регистрация: 27.06.2014
Сообщений: 74
24.10.2014, 16:44  [ТС]
ок, псевдокод не помог.
Привожу полный исходник:

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
29
30
31
32
33
34
35
36
37
38
#include <stdio.h>
#include <windows.h>
#include "app_cDirect.h"
 
typedef int (__cdecl *MYPROC)(int, int);
 
JNIEXPORT jint JNICALL Java_app_cDirect_cr_1get_1version_1info(JNIEnv * jenv, jclass jobj, jobject str)
{
    int res = 0;
 
    HINSTANCE hinstLib;
    MYPROC ProcAdd;
    BOOL fFreeResult, fRunTimeLinkSuccess = FALSE;
 
    hinstLib = LoadLibrary(TEXT("D:\\dll8.dll"));
 
    if (hinstLib != NULL)
    {
        ProcAdd = (MYPROC) GetProcAddress(hinstLib, "summ");
 
        if (NULL != ProcAdd)
        {
            fRunTimeLinkSuccess = TRUE;
            res = (ProcAdd) (4,7);
        }
        // Free the DLL module.
 
        fFreeResult = FreeLibrary(hinstLib);
    }
 
    // If unable to call the DLL function, use an alternative.
    if (! fRunTimeLinkSuccess)
        printf("Message printed from executable\n");
 
   
 
    return res;
}
при вызове получаю сообщение Message printed from executable, однако при обычном вызове(не из длл) метод вызывается нормально
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,531
Записей в блоге: 1
24.10.2014, 17:02
ну, во-первых, из твоих слов не ясно, какое именно условие не срабатывает!
!fRunTimeLinkSuccess
будет
либо если hinstLib == NULL,
либо если ProcAdd== NULL
почему б сразу под этими условиями не сделать printf и выяснить?
0
1 / 1 / 1
Регистрация: 27.06.2014
Сообщений: 74
24.10.2014, 17:07  [ТС]
Kuzia domovenok, ты оказался прав, длл не нашлась, но почему? она лежит на диске D:
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,531
Записей в блоге: 1
24.10.2014, 17:17
DLL не нашлась? То есть hinstLib равен нулю?
Ну тогда проверь путь.
вообще у меня подозрение, что вся проблема в юникоде.
А что возвращает GetLastError после того как hinstLib равен нулю?
А что будет, если файл библиотеки попытаться открыть просто на чтение?
0
1 / 1 / 1
Регистрация: 27.06.2014
Сообщений: 74
24.10.2014, 17:26  [ТС]
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
DLL не нашлась? То есть hinstLib равен нулю?
Ну тогда проверь путь.
вообще у меня подозрение, что вся проблема в юникоде.
А что возвращает GetLastError после того как hinstLib равен нулю?
А что будет, если файл библиотеки попытаться открыть просто на чтение?

путь железно верный - т.к. если вызывать просто одну длл то все ок, я поэтому и проверку загрузки библиотеки даже не стал делать
hinstLib равен 0
GetLastError возвратил какой-то длинный код ошибки: 1797013516
не понял как открыть на чтение
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,531
Записей в блоге: 1
24.10.2014, 17:36
http://msdn.microsoft.com/en-u... 85%29.aspx

Добавлено через 5 минут
Цитата Сообщение от vlinx Посмотреть сообщение
код ошибки: 1797013516
не может быть такого кода. Покажи, как ты его получаешь и выводишь.
1
1 / 1 / 1
Регистрация: 27.06.2014
Сообщений: 74
24.10.2014, 17:41  [ТС]
во блин какая ошибка

ERROR_BAD_EXE_FORMAT
193 (0xC1)
%1 is not a valid Win32 application.

мммм это может быть если пытаться из 64-битной длл вызвать 32х?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.10.2014, 17:41
Помогаю со студенческими работами здесь

Вызов функции из dll
Привет всем! Пишу программу на Java. Спокойно, форум тот... Моя программа должна работать с устройством, висящим на LPT-порте. Для этого...

Вызов функции с DLL
Сразу говорю пишу программу как и *.dll в VisualStudio 2010. Суть: написал dll, вроде-бы все нормально скомпилировало и удачно создало...

Вызов dll из подпрограммы
Я сделал dll и вызов функции из мейна основной программы Я хочю, в мейне загрузить саму dll а вызывать функции из других мест программы ...

Вызов метода класса из DLL
Добрый вечер. Имеется длл, в которой есть: 1. Класс, содержащий метод 2. Функция, возвращающая объект этого класса Если п.2...

Вызов функции, использующей vector, из dll
Всем привет! Проблема в следующем: есть dll-ка, в ней 3 простых функции: 1. Sum - сложение 2х целых чисел. 2. Concat - соединяет 2...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru