1 / 1 / 0
Регистрация: 11.04.2011
Сообщений: 15
1

Не работает простая функция из DLL библиотеки

19.11.2011, 19:41. Показов 1347. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Создал DLL-ку по примеру. Добавил в нее свою функцию "Plus". Когда вызываю ее, она ничего не делает
DLL-ка
C++
1
2
3
4
5
6
7
8
9
10
11
12
#pragma argsused
int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)
{
        return 1;
}
extern "C" void __export  Message(char *s)  {
    Application->MessageBox(s,"From DLL",IDOK);
    }
 
extern "C" void __export  Plus(int a, int b, int c)  {
    c=a+b;
}
Так я вызываю эту функцию из DLL:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int c=0,a=5,b=7;
void (__stdcall *Plus)(int x, int y, int z);
    HINSTANCE dllp = LoadLibrary("p1.dll");
    if (dllp) {
        Plus= (void(__stdcall *) (int x, int y, int z))
        GetProcAddress(dllp, "_Plus");
        if (Plus)
                        {
                        Plus(a, b, c);
                        Memo1->Lines->Add(c);
                        }
                }
    FreeLibrary(dllp);
}
В мемо выводится что с=0, а должно быть 5+7=12. Помогите пожалуйста!!!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.11.2011, 19:41
Ответы с готовыми решениями:

Не работает функция из dll библиотеки
Здравствуйте. Помогите, пожалуйста, найти неполадки. В приложении нужно ввести в один Edit число, а...

Подключение библиотеки DLL C++: работает на примере консоли и не работает в WinForms App
Здравствуйте! Помогите начинающему бедному студенту!! Осваиваю С++. В книге...

Не работает простая функция
Ребят, помогите плз, уже голову сломал. function openCloseNavi() { var obj =...

Не работает простая функция
Я дико туплю, но не понимаю почему у меня не работает простая функция сравнения двух натуральных...

5
872 / 448 / 35
Регистрация: 25.10.2011
Сообщений: 910
19.11.2011, 20:07 2
В DLL тоже нужно указывать stdcall и раз используете его, то имя функции используется без "_". И проблема тут даже не в DLL, создайте аналогичную локальную функцию и посмотрите, что и там "с = 0".
1
1 / 1 / 0
Регистрация: 11.04.2011
Сообщений: 15
19.11.2011, 20:29  [ТС] 3
Да, создал функцию, также не работает. В чем тут проблема, подскажите пожалуйста?
0
872 / 448 / 35
Регистрация: 25.10.2011
Сообщений: 910
19.11.2011, 20:39 4
Вам нужно указать, что вы работаете не со значением, а с переменной, пара простых примеров.

Процедуры.
C++
1
2
3
4
5
6
7
8
9
10
void Inc (int &y)
{
   y++;
}
//----------------------------------
void CreateParam(AnsiString &Input)
{
   Input = "[p]" + Input + "[/p]";
}
//----------------------------------
Использование.
C++
1
2
3
4
5
6
7
8
9
// ...
int x = 5;
Inc(x);
Inc(x);
ShowMessage(IntToStr(x));
AnsiString MyParam = "IsNew";
CreateParam(MyParam);
ShowMessage(MyParam);
// ...
Либо вместо процедур использовать функции и возвращать значение через return.
0
1 / 1 / 0
Регистрация: 11.04.2011
Сообщений: 15
19.11.2011, 21:00  [ТС] 5
Вообще детский вопрос, как я сам не догнал. DefineTrueFalse, спасибо большое за помощь!!!

У меня еще один вопрос: если в DLL есть экспортируемая функция, которая вызывает другую функцию в этой DLL(но она не экспортируемая). Будет такое работать?
0
872 / 448 / 35
Регистрация: 25.10.2011
Сообщений: 910
19.11.2011, 21:02 6
Конечно.
0
19.11.2011, 21:02
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.11.2011, 21:02
Помогаю со студенческими работами здесь

Не работает простая функция
смысл таков: функция должна быть такова ; текущая ссылка, с адресом на картинку, нужно...

Функция из dll библиотеки возвращает неправильное значение
Добрый день. Возникла проблема при использовании dll библиотеки, при котором функция из не взятая...

Не работает простая функция POST
У меня есть файл test.php <?php $c = $_POST; echo("$c"); ?> Я перехожу через браузер на: ...

Почему не работает очень простая функция на JQuery
Здравствуйте. Не могу понять, как мне создать функцию в файле scripts.js, чтобы она выводилась в...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

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