From 372caea057ff88b2fb1327c45f77b7e4205293ea Mon Sep 17 00:00:00 2001 From: astrojhgu Date: Mon, 19 Oct 2009 17:02:42 +0000 Subject: git-svn-id: file:///home/svn/opt_utilities@85 ed2142bd-67ad-457f-ba7c-d818d4011675 --- interface/optdl.hpp | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 interface/optdl.hpp (limited to 'interface') diff --git a/interface/optdl.hpp b/interface/optdl.hpp new file mode 100644 index 0000000..9729335 --- /dev/null +++ b/interface/optdl.hpp @@ -0,0 +1,45 @@ +#ifdef __linux__ + +#ifndef DL_MODEL_HPP +#define DL_MODEL_HPP +#define OPT_HEADER +#include +#include +#include +#include +#include +#include + +namespace opt_utilities +{ + + template + model,std::string>* load_model(const char* fname) + { + void* handle; + + handle=dlopen(fname,RTLD_LAZY); + + if(!handle) + { + throw opt_exception("faild loading object"); + } + + + model,std::string>* (*func_create)(); + + func_create=(model,std::string>* (*)())dlsym(handle,"create_model_object"); + + if(!func_create) + { + throw opt_exception("symble undefined"); + } + return func_create(); + } +} + + + +#endif +#endif +//EOF -- cgit v1.2.2