Dear Stef,
Thanks a lot for a provided example. From your code I have made a program (see
attachment) whichcompiles. However, I can not link it with the libsane-genesys.
apparently I miss something.
I have compiled SANE libraries as following:> export BACKENDS=genesys> export
CFLAGS="-D UNIT_TESTING"> ./configure --prefix=.....
The program compiles perfectly as:> gcc -I ./compile/include/ -I
./compile/backend/ -c tst_scan.c
But when trying to link against libsane-genesys library gcc complains:> gcc -I
./compile/include/ -I ./compile/backend/ -L ./local/lib/sane/ -l sane-genesys
tst_scan.c -o tst_scan/tmp/cc958m4x.o: In function `sanei_debug_genesys_call':
tst_scan.c:(.text+0xad): undefined reference to `sanei_debug_msg'
/tmp/cc958m4x.o: In function `main':
tst_scan.c:(.text+0xcd): undefined reference to `sanei_init_debug'
tst_scan.c:(.text+0xe0): undefined reference to `sane_genesys_init'
tst_scan.c:(.text+0xf3): undefined reference to `sane_strstatus'
tst_scan.c:(.text+0x120): undefined reference to `sane_genesys_open'
tst_scan.c:(.text+0x133): undefined reference to `sane_strstatus'
tst_scan.c:(.text+0x14a): undefined reference to `sane_genesys_exit'
tst_scan.c:(.text+0x188): undefined reference to `sanei_genesys_compute_dpihw'
tst_scan.c:(.text+0x2b0): undefined reference to `gl843_init_scan_regs'
tst_scan.c:(.text+0x2ec): undefined reference to `sane_strstatus'
tst_scan.c:(.text+0x32c): undefined reference to `gl843_begin_scan'
tst_scan.c:(.text+0x33f): undefined reference to `sane_strstatus'
tst_scan.c:(.text+0x3b8): undefined reference to
`sanei_genesys_read_data_from_scanner'
tst_scan.c:(.text+0x3d4): undefined reference to `gl843_end_scan'
tst_scan.c:(.text+0x3e7): undefined reference to `sane_strstatus'
tst_scan.c:(.text+0x42b): undefined reference to `sanei_genesys_write_pnm_file'
tst_scan.c:(.text+0x45b): undefined reference to `sane_genesys_close'
tst_scan.c:(.text+0x460): undefined reference to `sane_genesys_exit'
If I try to use libtool, it complains that I am linking against loadable module
Apparently I am doing something wrong.Please let me know what is the proper way
of compiling a unit testing program.
Thanks a lot,Myroslav
#define UNIT_TESTING 1
#define BACKEND_NAME genesys
#include "genesys.h"
#include "genesys_gl843.h"
int main(int argc, char **argv){
DBG_INIT();
SANE_Int vc;
SANE_Auth_Callback cb;
SANE_Status status;
SANE_Handle handle;
Genesys_Scanner *session;
Genesys_Device *dev;
/* backend init */
status = sane_genesys_init (&vc, cb);
if (status != SANE_STATUS_GOOD){
printf ("sane_init()=%s\n", sane_strstatus (status));
return 1;
}
status = sane_genesys_open ("genesys", &handle);
if (status != SANE_STATUS_GOOD){
printf ("sane_open()=%s\n", sane_strstatus (status));
sane_genesys_exit ();
return 1;
}
session = (Genesys_Scanner *) handle;
dev = session->dev;
/* zone de test */
/*dev->settings.scan_method=SCAN_METHOD_FLATBED;
status = dev->model->cmd_set->move_to_ta (dev);
if (status != SANE_STATUS_GOOD){
DBG (DBG_error, "move_to_ta failed: %s\n", sane_strstatus (status));
}*/
/* scan */
float dpi = 100;
int dpihw = sanei_genesys_compute_dpihw (dev, dpi);
unsigned int channels = 3;
unsigned int depth=8;
unsigned int lines = 1200;
float startx = 10; // in inches
unsigned int pixels = 200*dpihw/MM_PER_INCH;
int size= (int)pixels*channels*lines*(depth/8);
unsigned char *data = malloc (size);
/* round down pixel number */
unsigned int factor=pixels;
factor=(factor/2)&0xfffe;
pixels=factor;
gl843_init_scan_regs (dev,
dev->reg,
dpi,
dpi,
startx,
0,
pixels,
lines,
depth,
channels,
SCAN_MODE_COLOR,
0,
SCAN_FLAG_USE_XPA |
SCAN_FLAG_DISABLE_SHADING |
SCAN_FLAG_DISABLE_GAMMA |
SCAN_FLAG_IGNORE_LINE_DISTANCE);
//......
Genesys_Register_Set *r;
/*r = sanei_genesys_get_address (dev->reg, 0x98);
r->value = 0x02;
r = sanei_genesys_get_address (dev->reg, 0x99);
r->value = 0xe0;
r = sanei_genesys_get_address (dev->reg, 0x9b);
r->value = 0x90;*/
RIE (dev->model->cmd_set->bulk_write_register (dev, dev->reg, GENESYS_GL843_MAX_REGS));
RIE (gl843_begin_scan (dev, dev->reg, SANE_FALSE));
DBG (DBG_proc, "XXX STEF XXX\n");
DBG (DBG_proc, "sanei_genesys_start_motor\n");
DBG (DBG_proc, "ZZZ STEF ZZZ\n");
sanei_genesys_read_data_from_scanner (dev, data, size);
RIE (gl843_end_scan (dev, dev->reg, SANE_TRUE));
sanei_genesys_write_pnm_file ("image.pnm", data, depth, channels, pixels, lines);
/* on gare et on ferme */
status = dev->model->cmd_set->slow_back_home (dev, SANE_TRUE);
sane_genesys_close (handle);
sane_genesys_exit ();
return 0;
}
--
sane-devel mailing list: [email protected]
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/sane-devel
Unsubscribe: Send mail with subject "unsubscribe your_password"
to [email protected]