
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
25.11.2004, 20:59
|
|||
|---|---|---|---|
|
|||
Нужна помощь в создании dll. |
|||
|
#18+
Все работает нормально для функций не возвращающих параметр //------Dll.h--------------------------- #define DLL_SPEC extern "C" __export DLL_SPEC char * __stdcall Message(char *p); //------Dll.cpp------------------------- #define _DLLMAINCPP #include "dllmain.h" .. char * __stdcall Message(char* p)..... ... //------App.h-------------------------- typedef char * (__stdcall *func1)(char*); HMODULE lib; func1 MMessage; //------App.cpp-------------------------- #define _APPMAINCPP #include "dllmain.h" ... HMODULE lib = LoadLibrary("dllmain.dll"); if(lib) MMessage = (func1)GetProcAddress(lib, "Message"); ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.11.2004, 21:00
|
|||
|---|---|---|---|
|
|||
Нужна помощь в создании dll. |
|||
|
#18+
Вот так не работает вставляю вместо char* void все работает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.11.2004, 07:28
|
|||
|---|---|---|---|
|
|||
Нужна помощь в создании dll. |
|||
|
#18+
А far char* или LPVOID? или возвращай значение в параметр :) f(char *szParam, char *szResult); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.11.2004, 09:41
|
|||
|---|---|---|---|
|
|||
Нужна помощь в создании dll. |
|||
|
#18+
Код: plaintext 1. 2. 3. А может проблема как раз в том, что ты в своей программе переопределяешь char*? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.11.2004, 20:59
|
|||
|---|---|---|---|
|
|||
Нужна помощь в создании dll. |
|||
|
#18+
что значит переопределяю не особо это понимаю программа простейшая конечно можно использовать и как процедуру но все таки странно как то ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.11.2004, 21:08
|
|||
|---|---|---|---|
|
|||
Нужна помощь в создании dll. |
|||
|
#18+
//------App.h-------------------------- typedef char * (__stdcall *func1)( char* ); HMODULE lib; func1 MMessage; все равно не получается Текст проекта ----dll.h--------- #ifndef _abc_h #define _abc_h #ifdef _DLL__ #define DLL_EI __declspec(dllexport) #else #define DLL_EI __declspec(dllimport) #endif extern "C" char * DLL_EI Code_Dec(char *s); #endif ----dll.cpp-------------- // îáðàòèòå íà ýòó ñòðî÷êó âíèìàíèå #include <vcl.h> #include <windows.h> #pragma hdrstop #define _DLLCPP #include "dllmain.h" #pragma argsused int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved) { return 1; } //--------------------------------------------------------------------------- char * Code_Dec(char *s) { for (int i = 0;; i++) { if (s == '\0') break; s = s ^ 'À'; } return s; // Application->MessageBox(p,"From DLL",IDOK); } ---------App.h----------- //--------------------------------------------------------------------------- #ifndef Unit1H #define Unit1H //--------------------------------------------------------------------------- #include <Classes.hpp> #include <Controls.hpp> #include <StdCtrls.hpp> #include <Forms.hpp> //--------------------------------------------------------------------------- //typedef char * (__stdcall *func1)(char*); typedef char * (__stdcall*func1)(char*); //--------------------------------------------------------------------------- class TForm1 : public TForm { __published: // IDE-managed Components TEdit *Edit1; TButton *Button1; void __fastcall Button1Click(TObject *Sender); private: // User declarations HINSTANCE lib; func1 Code; public: // User declarations __fastcall TForm1(TComponent* Owner); }; //--------------------------------------------------------------------------- extern PACKAGE TForm1 *Form1; //--------------------------------------------------------------------------- #endif ---------App.cpp------- //--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #define _DLL__ #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { HINSTANCE lib = LoadLibrary("dllmain.dll"); if(lib) Code = (func1)GetProcAddress(lib, "Code_Dec"); if(Code) Edit1->Text = Code(Edit1->Text.c_str()); FreeLibrary(lib); Code = NULL; } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
27.11.2004, 11:22
|
|||
|---|---|---|---|
Нужна помощь в создании dll. |
|||
|
#18+
NightGhostчто значит переопределяю не особо это понимаю программа простейшая конечно можно использовать и как процедуру но все таки странно как то Код: plaintext Дык, вот здесь и переопределяешь: typedef <имя типа> <определение>. В твоем случае имя типа char*, а определение Код: plaintext Код: plaintext По -видимому, необходимо примерно следующее: Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
29.11.2004, 11:49
|
|||
|---|---|---|---|
Нужна помощь в создании dll. |
|||
|
#18+
про фары забудьде, все уже, нету фаров. А есть единое виртуальное адресное пространство задачи. А что у тебя char* не возвращается, так скорее всего ты возвращаешь указатель на данные, которые действительны только внутри твоей функции в твоей DLL. Например, на автоматический массив. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
29.11.2004, 13:07
|
|||
|---|---|---|---|
|
|||
Нужна помощь в создании dll. |
|||
|
#18+
NightGhostТекст проекта Код: plaintext 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. Я бы посоветовал внести следующие изменения в функцию Code_Dec: 1. В качестве параметра использовать не char *, а const char * 2. В функции объявить переменную: char *s 3. Сделать присваивание: s=(char *)<stroka> Т.е. функция будет выглядеть примерно так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=57&mobile=1&tid=2034038]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
92ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
2ms |
| others: | 244ms |
| total: | 440ms |

| 0 / 0 |
