getkerninfo() 함수 사용문제

fanuk의 이미지

AIX4.3에서 getkerninfo() 를 사용해서 C 프로그램을 짰습니다.

C에서는 잘 돌아갔었는데

class를 만들고 그 클래스의 멤버함수에서 getkerninfo()를 불렀더니

LicenseMgr.cpp: In method `int LicenseMgr::getMacAddress ()':
LicenseMgr.cpp:150: implicit declaration of function `int getkerninfo (...)'

이런 메세지가 뜨네요

include관계를 분석해보고 -D_KERNEL 옵션을 줘서 다시 컴파일했는데

In file included from /usr/include/net/net_globals.h:231,
                 from /usr/include/sys/cdli.h:33,
                 from /usr/include/sys/ndd_var.h:35,
                 from LicenseMgr.h:45,
                 from LicenseMgr.cpp:4:
/usr/include/net/proto_net.h:51: sys/call_ie.h: No such file or directory

이런 메세지를 뱉습니다.

어떻게 해야 getkerninfo를 사용할수 있을까요.

답변 미리 감사드립니다.

pynoos의 이미지

만약 -D_KERNEL 때문에 얘기치 않은 증상이 발생하면,

extern "C" int getkerninfo(int, char *, int *, int32long64_t);

라고 한 줄 선언해주세요.

아니면

#define _KERNEL
extern "C" {
#include <net/proto_uipc.h>
}
#undef _KERNEL

라고 사용하셔도 될 듯 합니다.