Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
37 / 37 / 5
Регистрация: 12.02.2010
Сообщений: 239

Явная загрузка dll

03.02.2011, 21:43. Показов 1623. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите пожалуйста, что у меня в коде не так. Учился вот здесь Dynamic-Link Library: Теория + Практика но что то не работает.

Код 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
27
28
29
30
31
32
33
34
35
36
37
38
//---------------------------------------------------------------------------
 
#include <vcl.h>
#include <windows.h>
#include "Test.h"
#pragma hdrstop
//---------------------------------------------------------------------------
//   Important note about DLL memory management when your DLL uses the
//   static version of the RunTime Library:
//
//   If your DLL exports any functions that pass String objects (or structs/
//   classes containing nested Strings) as parameter or function results,
//   you will need to add the library MEMMGR.LIB to both the DLL project and
//   any other projects that use the DLL.  You will also need to use MEMMGR.LIB
//   if any other projects which use the DLL will be performing new or delete
//   operations on any non-TObject-derived classes which are exported from the
//   DLL. Adding MEMMGR.LIB to your project will change the DLL and its calling
//   EXE's to use the BORLNDMM.DLL as their memory manager.  In these cases,
//   the file BORLNDMM.DLL should be deployed along with your DLL.
//
//   To avoid using BORLNDMM.DLL, pass string information using "char *" or
//   ShortString parameters.
//
//   If your DLL uses the dynamic version of the RTL, you do not need to
//   explicitly add MEMMGR.LIB as this will be done implicitly for you
//---------------------------------------------------------------------------
 
#pragma argsused
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fwdreason, LPVOID lpvReserved)
{
    return 1;
}
 
float Sum(float a, float b)
{   
    return a + b;
}
//---------------------------------------------------------------------------
Код Test.h:
C++
1
2
3
4
5
6
7
8
9
10
11
12
#ifndef _TEST_H
#define _TEST_H
 
#ifdef TESTDLL_EXPORTS
#define DLL_SPEC extern "C" __declspec(dllexport) 
#else
#define DLL_SPEC extern "C" __declspec(dllimport)
#endif
 
DLL_SPEC float Sum(float a, float b);
 
#endif
Код вызывающего приложения:
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
39
40
41
42
43
44
45
46
47
48
49
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
 
#include "code.h"
#include "Test.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    float a, b, c;
 
    a = StrToFloat(Edit1->Text);
    b = StrToFloat(Edit2->Text);
 
    typedef float __cdecl (*dll_func)(float a, float b);
    dll_func pSum = NULL;
 
    HMODULE hDLL = LoadLibrary("MyDll.dll");
    if (!hDLL)
    {
        ShowMessage("Невозможно загрузить библиотеку 'MyDll.dll'!!!");
        return;
    }
 
    pSum = (dll_func)GetProcAddress(hDLL, "_Sum");
 
    if (!pSum)
    {
        ShowMessage("Не возможно определить функцию 'Sum'!!!");
        return;
    }
 
    c = pSum(a, b);
 
    FreeLibrary(hDLL);
 
    Label1->Caption = c;
}
//---------------------------------------------------------------------------
Проект компилируется отлично, только при выполнение выдает ошибку "Не возможно определить функцию 'Sum'!!!"
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.02.2011, 21:43
Ответы с готовыми решениями:

Явная загрузка DLL из ДРУГОЙ DLL
Помогите явно загрузить DLL из исходной DLL Исходная DLL Unit1.h HINSTANCE dllInstance2; typedef int(__import *FType(int)); ...

Явная загрузка .dll (Выподает "ShowMessage")
Добрый денб форум, я пытаюс загрузить .dll с явным загрузком, но когда компилирую проект то выподает ShowMessage(&quot;I can't load...

Явная загрузка DLL
Доброго дня всем! Мне надо сделать явную подгрузку dll в проекте и использовать с нее некую функцию (например FormMatrix() ). Эта...

3
Maniac
Эксперт С++
 Аватар для ISergey
1464 / 965 / 160
Регистрация: 02.01.2009
Сообщений: 2,820
Записей в блоге: 1
03.02.2011, 21:52
Здесь
C++
1
2
3
4
float Sum(float a, float b)
{       
        return a + b;
}
Тоже нужно указать конвенцию вызова...
Тоесть так
C++
1
2
3
4
float __cdecl Sum(float a, float b) // 
{       
        return a + b;
}
0
37 / 37 / 5
Регистрация: 12.02.2010
Сообщений: 239
04.02.2011, 19:24  [ТС]
Что то не очень помогает помогает, все так же, не может определить функцию!
0
Maniac
Эксперт С++
 Аватар для ISergey
1464 / 965 / 160
Регистрация: 02.01.2009
Сообщений: 2,820
Записей в блоге: 1
04.02.2011, 19:52
Здесь посмотри..
Импорт DLL библиотеки
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.02.2011, 19:52
Помогаю со студенческими работами здесь

Явная загрузка DLL
Господа начал изучать , первая программа и проблема , буду признателен за помощь . вот кот dll #include &quot;dll.h&quot; #include...

явная загрузка dll
#include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;windows.h&gt; #include &lt;tchar.h&gt; HMODULE p_dll = LoadLibrary(L&quot;create_dll.dll&quot;); ...

Явная загрузка .dll
Поблема: библиотеку подключил, но внутри никак не найду функцию HMODULE hLibrary = 0; hLibrary = LoadLibrary(&quot;MyDll.dll&quot;); ...

Не получается явная загрузка dll
Не получается выполнить явную загрузку dll. Ошибка - память не может быть read. В чем дело? #include &lt;stdio.h&gt; #include...

Явная загрузка разметки из xml для popup window
Возможно ли для popupwindow загружать разметку через xml, чтобы не мучатся и создавать разметку в коде? А также как на момент когда попап...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
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. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru