#include #include typedef void * (*Tds_OpenRead) (char * name); typedef unsigned long (*Tds_Read) (void * h, char * data); typedef void (*Tds_CloseRead)(void * h); typedef void * (*Tds_OpenWrite) (char * name, int ndsize, int srate); typedef unsigned long (*Tds_Write) (void * h, char * data, int bytes); typedef void (*Tds_CloseWrite)(void * h); Tds_OpenRead ds_OpenRead; Tds_Read ds_Read; Tds_CloseRead ds_CloseRead; Tds_OpenWrite ds_OpenWrite; Tds_Write ds_Write; Tds_CloseWrite ds_CloseWrite; #define MAXITEMS 340 struct TMaxArray { long reserved[32]; long buf[MAXITEMS]; } ma; union { void * p; Tds_OpenRead ds_OpenRead; Tds_Read ds_Read; Tds_CloseRead ds_CloseRead; Tds_OpenWrite ds_OpenWrite; Tds_Write ds_Write; Tds_CloseWrite ds_CloseWrite; } u; int InitDataRiver() { void * dr_lib = dlopen("/tmp/libdata_river.dylib",RTLD_LAZY); if (dr_lib) { u.p = dlsym(dr_lib,"ds_OpenRead"); ds_OpenRead = u.ds_OpenRead; u.p = dlsym(dr_lib,"ds_Read"); ds_Read = u.ds_Read; u.p = dlsym(dr_lib,"ds_CloseRead"); ds_CloseRead = u.ds_CloseRead; u.p = dlsym(dr_lib,"ds_OpenWrite"); ds_OpenWrite = u.ds_OpenWrite; u.p = dlsym(dr_lib,"ds_Write"); ds_Write = u.ds_Write; u.p = dlsym(dr_lib,"ds_CloseWrite"); ds_CloseWrite = u.ds_CloseWrite; dlclose(dr_lib); return 1; } else return 0; }; int main (int argc, char * const argv[]) { // char buf[2000]; if (InitDataRiver()) { void * hWr = ds_OpenWrite("/tmp/FromXcode",0,100); void * hRd = ds_OpenRead("/tmp/FromXcode"); if (hWr) { int i; for (i=0;i<10;i++) { sprintf((char *)ma.buf,"Hello, World %d!\n",i); int l = sizeof(ma); int n = ds_Write(hWr,(char *) ma.buf,l); } ds_CloseWrite(hWr); } if (hRd) { while (ds_Read(hRd,(char *) ma.buf)) printf((char *) ma.buf); ds_CloseRead(hRd); } } return 0; }