arashmidos2020
سه شنبه 17 فروردین 1389, 06:53 صبح
سلام. چرا این کد در سی پلاس سی پلاس اررور میده؟در C که مشکلی نداره.
چطور می تونم کستینگ رو انجام بدم؟
#include <stdio.h>
#include <sys/stat.h>
#include <sys/user.h>
#include <sys/reg.h>
#include <dlfcn.h>
//define my system calls number
#define NUMBER_SYS 2
#define SYS_OPEN 1
#define SYS_MKDIR 2
#define DENY 0
#define ALLOW 1
#define READONLY 2
static const struct syscalls_struct
{
char* name;
int id;
}syscalls[NUMBER_SYS]={
{ "open", SYS_OPEN },
{ "mkdir", SYS_MKDIR }
};
// file system functions
//static int(*true_mkdir)(const char *, mode_t);
//changing real systemcall with my systemcall with dlsym
static void _init();
// define my function for new sys calls
int mkdir(const char *pathname, mode_t mode);
#include "main.h"
static int(*true_mkdir)(const char *, mode_t);
void _init()
{
void *libc_handle;
libc_handle = RTLD_NEXT;
true_mkdir = dlsym(libc_handle, "mkdir");
}
void GetDate()
{
}
int main()
{
struct user_regs_struct reges;
return 0;
}
error: invalid conversion from ‘void*’ to ‘int (*)(const char*, mode_t)’|
چطور می تونم کستینگ رو انجام بدم؟
#include <stdio.h>
#include <sys/stat.h>
#include <sys/user.h>
#include <sys/reg.h>
#include <dlfcn.h>
//define my system calls number
#define NUMBER_SYS 2
#define SYS_OPEN 1
#define SYS_MKDIR 2
#define DENY 0
#define ALLOW 1
#define READONLY 2
static const struct syscalls_struct
{
char* name;
int id;
}syscalls[NUMBER_SYS]={
{ "open", SYS_OPEN },
{ "mkdir", SYS_MKDIR }
};
// file system functions
//static int(*true_mkdir)(const char *, mode_t);
//changing real systemcall with my systemcall with dlsym
static void _init();
// define my function for new sys calls
int mkdir(const char *pathname, mode_t mode);
#include "main.h"
static int(*true_mkdir)(const char *, mode_t);
void _init()
{
void *libc_handle;
libc_handle = RTLD_NEXT;
true_mkdir = dlsym(libc_handle, "mkdir");
}
void GetDate()
{
}
int main()
{
struct user_regs_struct reges;
return 0;
}
error: invalid conversion from ‘void*’ to ‘int (*)(const char*, mode_t)’|