Всем привет. Дело вот в чем. Читал книгу Архангельского, в которой описывалось как работать с dll. Сделал все как было написано. Код dll.
UMyDLL.h :
| Код | #ifndef _UMYDLL_H #define _UMYDLL_H
#ifdef __DLL__ #define DLL_EI __declspec(dllexport) #else #define DLL_EI __declspec(dllimport) #endif
extern "C" char* DLL_EI Code_Dec(char*s,char Key); #endif
|
UMyDLL.cpp :
| Код | #include <vcl.h> #include <windows.h> #pragma hdrstop #include "UMyDLL.h" //--------------------------------------------------------------------------- #pragma argsused int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved) { return 1; } //--------------------------------------------------------------------------- char* Code_Dec(char*s,char Key) { for (int i=0;;i++) { if (s[i]=='\0') break; s[i]=s[i] ^ Key; } return s; }
|
В классе формы
| Код | private: HINSTANCE dllInstance; typedef char (__import*FType(char*,char)); FType * C_D;
|
Подключение
| Код | dllInstance = LoadLibrary("MyDLL.dll"); if (dllInstance) { C_D=(FType*)GetProcAddress(dllInstance,"_Code_Dec"); ShowMessage("dll is loaded") ; } else ShowMessage("error dll");
|
Использование
| Код | if (C_D) Edit1->Text=C_D(Edit1->Text.c_str(),'A'); else {ShowMessage("errrrrorr");}
|
Вообщем так... При сборке проблем нет, но когда нажимаю на кнопку, чтобы произвести соответствующие действия, мне выдает ошибку "is not a vailid integer value" . При подключении и отключении dll все окей, а как только вызываю эту функцию, вот что получается. И еще в Edit я пишу только текст, никаих цифр. Помоги разобраться в чем проблема |