Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Написание и ипользование простейшей dll, Visual C++ 2008 Express Edition 
:(
    Опции темы
Mr_Demetrius
  Дата 17.12.2009, 16:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 17.3.2008

Репутация: нет
Всего: нет



Учусь писать длл-ки для Windows Forms приложений в МСВС. 

Написал длл, в ней функция которая возвращает сумму двух интов. Теперь пишу приложение, которое подключает эту длл и использует эту ф-ию. Написал так, чтобы возвращаемый инт выводился в лейбл на форме. Короче, всё скомпилировалось и запустилось, но, когда нажимаю на баттон, по нажатии на котором должна подключаться длл и выводить сумма в лебл, то длл подключается, а в лейбл выводится какое-то левое число, большое. Причем для любых чисел, которые я суммирую, выводится одно и то же большое число.

Вот куски кода. 
Хедер дллки:
Код
#define DllExport extern "C" _declspec(dllexport)
DllExport int RunStopHook(int a, int b);


Код дллки:
Код
#include <windows.h>
#include "dll.h"

BOOL APIENTRY DllMain(
    HINSTANCE hinstDLL,  // handle to DLL module
    DWORD fdwReason,     // reason for calling function
    LPVOID lpReserved )  // reserved
{
    return TRUE;  // Successful DLL_PROCESS_ATTACH.
}

DllExport int RunStopHook(int a, int b)
{
return a+b;
}


Кусок кода нажатия на кнопку:
Код
    private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
    HINSTANCE hModule;
    typedef int (RunStopHookProc)(int,int);
    RunStopHookProc* RunStopHook;
    hModule = ::LoadLibrary(L"dll.dll");
    RunStopHook = (RunStopHookProc*)::GetProcAddress((HMODULE)hModule, "RunStopHook");
    int test = (*RunStopHook)(1,2);
    this->label1->Text=Convert::ToString(test);
             }


Где происходит сбой? Почему возвращается не сумма a и b, а что-то левое? Или возвращается всё правильно, но где-то теряется?

Это сообщение отредактировал(а) Mr_Demetrius - 17.12.2009, 16:27
PM MAIL ICQ Skype   Вверх
586
Дата 17.12.2009, 19:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

Репутация: 6
Всего: 146



    private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
    HINSTANCE hModule;
    typedef int (*RunStopHookProc)(int,int);
    RunStopHookProc* RunStopHook;
    hModule = ::LoadLibrary(L"dll.dll");
    RunStopHook = (RunStopHookProc*)::GetProcAddress((HMODULE)hModule, "RunStopHook");
    int test = RunStopHook(1,2);
    this->label1->Text=Convert::ToString(test);
             }

PM   Вверх
Mr_Demetrius
Дата 17.12.2009, 19:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 17.3.2008

Репутация: нет
Всего: нет



Спасибо.
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0645 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.