|
다시올려서 미안합니다....기술란이 자료만으로 해결이 안돼서...
: : [상황설명]
: : Visual C++로 DLL을 만들었습니다.DLL을 만들때 제가 미리 만들어 놓은 snmp.lib(C로 짠 static lib)를 링크시켰구요. 즉 기존의 smmp.lib 를 DLL로 만든거죠.
: : 근데 DLL을 사용하는 프로그램A에서 함수B를 DLL에 등록하여 DLL이 어떤이벤트 마다 프로그램A의 함수B를 부르도록 되있습니다.
: :
: : [문제]
: : 프로그램 A에서 DLL쪽으로 함수 호출은 되는데
: : DLL 에서 프로그램 쪽으로 호출이 안됩니다..
: : C++ Builder에서 함수B를 어떻게 선언해야 하나요....?
: :
DLL을 사용하는 프로그램 내에서 DLL내의 함수 호출은 잘 되거든요....기술란에 이과정 설명이 잘소개되어 있는덕분에요...
저의 문제는 반대로...DLL 내에에서 프로그램의 함수를 호출하는 경우거든요....
프로그램이 DLL내의 함수를 호출 하면서 프로그램 내의 함수에 대한 포인터를 파라미터로 넘겨주고
DLL은 이함수 포인터를 가지고 프로그램 내의 함수를 호출합니다.
이때 에라가 나면서 프로그램이 종료하더군요...
프로그램에서 파라미터로 넘겨줄 함수 선언을
void pop_handler(Pop_Info *pop_ptr)...단순히 이렇게....했거든요...이게 문젠가요?
그리고 다음과 같이 호출하면서 pop_handler를 넘겨줍니다.
PopPoll(IP[0], // IP
"public", // Community String
5, // get period
1, // Timeout
1, // MIB number
10, // Retry number
mib, // Char **
POPUP_ONE,
pop_handler, //handler
pop_timeout_handler, //timeout handler
"stack name");
물론 PopPoll 이란 함수는 DLL 내에 있는함수죠....
이렇게 하면 ...DLL 쪽에서 pop_handler 를 호출하도록 되어있지요....
그런데 DLL 쪽에서 DLL 쪽에서 pop_handler 를 호출하면서 에러가 발생 하더군요...
Visual C++로 할땐 잘되던건데요....
제 설명이 좀 부족한가요....
이해가 되셨다면...도움을...
|