windows

[알림판목록 I] [알림판목록 II] [글목록][이 전][다 음]
[ windows ] in KIDS
글 쓴 이(By): Jaedy (개같은 내 )
날 짜 (Date): 1998년 12월 22일 화요일 오후 02시 48분 02초
제 목(Title): [급한 질문] DLL



제가 아는 사람의 부탁으로 올립니다.
해법을 아는 분들은 여기에 답변을 해 주시거나 저에게 메일을 보내 주시면 
대단히 고맙겠습니다.


******************* 여기서 부터 **************************
> dll을 호출하는 sample program을 만들었는데, 30000번이상을
> 돌리면 stack overfllow가 발생하는데 이유를 아시는 분이 있을것
> 같아서 이렇게 질문을 올립니다.
> main Program에서는 file에서 string을 입력받아  dll을 호출하는 쪽으로
> string을
> 넘겨줍니다.  dll 쪽에서는 입력받은 string을 처리하고 결과를 main쪽으로
> 돌려주죠.. 이런 작업을 main쪽에서 30000번 이상을 했을경우 버츄얼 메모리
> 가 증가되어 stack over fllow가 나는데 이유를 아시는 분이 있을까요?
>
> main에서 for문을 이용하여 30000번 이상호출
>
> 혹시 dll 호출방식에 문제인지...
>
> main쪽 부분

-------------------------------------------------------------------------------
---
>
> HINSTANCE dll;
> int LoadDLL()
> {
>
>  dll = LoadLibrary( NURI);
>  if( dll==NULL)
>  {
>   printf("\nNURI.dll load fail\n");
>   return FALSE;
>  }
>
>  A1=(A_1)GetProcAddress(dll,"A1");
>  A2=(A_2)GetProcAddress(dll,"A2");
>  A3=(A_3GetProcAddress(dll,"A3");
>  A4=(A_4)GetProcAddress(dll,"A4");
>  A5=(A_5)GetProcAddress(dll,"A5");
>
>  return TRUE;
> }
>
> void UnLoadDLL()
> {
>  FreeLibrary(dll);
> }
>

-------------------------------------------------------------------------------
-
>
> load_dll.h
>

-------------------------------------------------------------------------------
-----
>
> typedef int (WINAPI *A_1)(char *,char *,char *);
> typedef int (WINAPI *A_2)();
> typedef int (WINAPI *A_3)(unsigned char *,struct  index_result[] ,int );
>
> typedef int (WINAPI *A_4)(unsigned char *);
> typedef int (WINAPI *A_5)(char *);
>
> A_1  A1;
> A_2  A2;
> A_3  A3;
> A_4  A4;
> A_5  A5;
>

-------------------------------------------------------------------------------
---------------
>
> export해주는 부분의 dll(NURI.dll)
>

-------------------------------------------------------------------------------
----------------
>
> #ifdef WIN_NT_DLL
> __declspec(dllexport)int A1(char udict[MAX_LINE], char sdict[MAX_LINE],
> char xdict[MAX_LINE]);
> #else
> int A1(char udict[MAX_LINE], char sdict[MAX_LINE], char
> xdict[MAX_LINE]);
> #endif
>
> #ifdef WIN_NT_DLL
> __declspec(dllexport)int A2();
> #else
> int A2();
> #endif
>
> #ifdef WIN_NT_DLL
> __declspec(dllexport)int A3(char config[MAX_LINE]);
> #else
> int A3(char config[MAX_LINE]);
> #endif
>
> #ifdef WIN_NT_DLL
> __declspec(dllexport)  int A4(unsigned char *line_buffer,struct
> index_result res[],int white_space) ;
> #else
> int A4(unsigned char *line_buffer,struct index_result res[],int
> white_space);
> #endif
>
> #ifdef WIN_NT_DLL
> __declspec(dllexport)int A5(unsigned char *word);
> #else
> int A5(unsigned char *word);
> #endif
>

-------------------------------------------------------------------------------
-----------------------

대단히 감사합니다.


 
[알림판목록 I] [알림판목록 II] [글 목록][이 전][다 음]
키 즈 는 열 린 사 람 들 의 모 임 입 니 다.