[질문]동적 라이브러리에 관해서

글쓴이: 익명 사용자 / 작성시간: 화, 2001/10/30 - 5:51오후
이곳에 있는 자료를 보면서 동적 라이브러리를 만들어보려고 하는데
자꾸 에러가 나오네요.
// 라이브러리 파일 (libenc.so)
void Initial (int i, int j) {
.....
}
// 메인 (enc.c)
void main (){
int i, j;
void (*Init)();
en = dlopen("/usr/local/lib/libenc.so", RTLD_LAZY);
Init = dlsym(en, "Initial"); <==== (1)
(*Init)(i, j); <==== (2)
.......
}
이런식으로 작성을 했는데
gcc -o enc enc.c -ldl 로 컴파일을 하면
(1)에선 cannot convert 'void *' to 'void (*)()' in assignment
(2)에선 too many arguments to function
이라는 에러가 나옵니다.
라이브러리가 잘못 작성된거는 아닌거 같은데 원인을 모르겠네요.
알려주셨으면 감사하겠습니다.
Forums:
동적라이브러리 문제가 아니라...
함수 프로토타입을 제대로 사용하지 않은 문제 같네요.
void main (){
int i, j;
void (*Init)( int i, int j ); /* 함수 인자 수정 */
en = dlopen("/usr/local/lib/libenc.so", RTLD_LAZY);
/* dlsym 이 void* 를 리턴하므로 캐스팅 필요 */
Init = (void(*)(int,int))dlsym(en, "Initial"); <==== (1)
/* 함수 인자 수정 했으므로 문제 없음 */
(*Init)(i, j); <==== (2)
.......
}
댓글 달기