0
X11/Xlib.h에 정의 된 XOpenDisplay 함수의 동작을 변경해야하는 프로젝트에서 작업하고 있습니다.라이브러리 삽입 : XOpenDisplay
나는 정확히 내가 무엇을 찾고해야 example을 찾았지만, 한 내가 컴파일 할 때, 내가받을 다음과 같은 오류 메시지 :
이XOpenDisplay_interpose.c:14: Error: conflicting types for »XOpenDisplay« /usr/include/X11/Xlib.h:1507: Error: previous declaration of »XOpenDisplay« was here
사람이 그 문제를 도와 줄 수 있습니까? 내가 뭘 놓치고 있니?
내 프로그램 코드
지금까지 - 위에서 언급 한 예에 따라 :#include <stdio.h>
#include <X11/Xlib.h>
#include <dlfcn.h>
Display *XOpenDisplay(char *display_name)
{
static Display *(*func)(char *);
Display *ret;
void* handle=NULL;
handle = dlopen ("XOpenDisplay_interpose.so", RTLD_LAZY);
if(!handle){
fprintf(stderr, "ERROR dlopen\n");
}
if(!func)
func = (Display *(*)(char *))dlsym(handle,"XOpenDisplay");
if(display_name)
printf("XOpenDisplay() is called with display_name=%s\n", display_name);
else
printf("XOpenDisplay() is called with display_name=NULL\n");
ret = func(display_name);
printf(" calling XOpenDisplay(NULL)\n");
ret = func(0);
printf("XOpenDisplay() returned %p\n", ret);
return(ret);
}
int XCloseDisplay(Display *display_name)
{
static int (*func)(Display *);
int ret;
void* handle=NULL;
handle = dlopen ("XOpenDisplay_interpose.so", RTLD_LAZY);
if(!handle){
fprintf(stderr, "ERROR dlopen\n");
}
if(!func)
func = (int (*)(Display *))dlsym(handle,"XCloseDisplay");
ret = (int)func(display_name);
printf("called XCloseDisplay(%p)\n", display_name);
return(ret);
}
int main()
{
}
안부, 앤디.
도움 주셔서 감사합니다. – OldMacDonald