1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
|
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
#include <gmodule.h>
#include "libply.h"
#include "bind.h"
//int (*render_ply_)(GdkDrawable *window,GdkGC *gc);
int (*read_ply_)(char *filename, PlySurface *p);
GModule* libply_gmodule=NULL;
#define CRIT libply_gmodule=g_module_open(l_p,0); if(! libply_gmodule ) {g_warning("dynamic loading of %s failed: %s", l_p, g_module_error()); };
int bind_libply(char *argv[])
{
if(! g_module_supported())
{
g_critical("dynamic loading is not supported");
return FALSE;
};
//first, try the command line version
#ifdef HAVE_CONFIG_H
#ifdef LIBPLY
{
gchar* l_p= g_strdup_printf("%s/libply",LIBPLY);
CRIT
g_free(l_p);
}
if(!libply_gmodule) {
gchar* l_p= g_strdup_printf("%s/.libs/libply.so",LIBPLY);
CRIT
g_free(l_p);
}
#endif
#endif
// maybe in windows it was dropped right by the executable
if(!libply_gmodule) {
gchar* insta_dir= g_path_get_dirname (argv[0]);
gchar* l_p= g_strdup_printf("%s/libply",insta_dir);
CRIT
g_free(insta_dir);
g_free(l_p);
}
if(! libply_gmodule ) {
gchar* l_p="libply";
CRIT
}
if(! libply_gmodule)
return FALSE;
if (!g_module_symbol(libply_gmodule,"read_ply",&read_ply_)
//!g_module_symbol(libply_gmodule,"render_ply",&render_ply_)
)
{g_critical("cannot bind to libply");return FALSE;};
return TRUE;
}
|