43#elif defined(WINDOWS) || defined(CYGWIN)
50#if defined(UNIX) || defined(CYGWIN)
59#define PATH_SEPARATOR ":"
61#define PATH_SEPARATOR ";"
66 MEMORY_BASIC_INFORMATION mbi;
68 return (HMODULE)mbi.AllocationBase;
76#ifndef G2O_LIBRARY_POSTFIX
77#define G2O_LIBRARY_POSTFIX ""
85 string(
".") + string(
SO_EXT);
89void findArguments(
const std::string& option, vector<string>& args,
int argc,
92 for (
int i = 0; i < argc; ++i) {
93 if (argv[i] == option && i + 1 < argc) {
94 args.push_back(argv[i + 1]);
100 char* envTypesPath = getenv(
"G2O_TYPES_DIR");
103 if (envTypesPath != NULL) {
104 typesPath = envTypesPath;
106 typesPath = G2O_DEFAULT_TYPES_DIR_;
108 if (dladdr(&info, &info) != 0) {
111#elif (defined WINDOWS)
112 char libFilename[MAX_PATH + 1];
114 if (instance && GetModuleFileName(instance, libFilename, MAX_PATH) > 0) {
121 for (vector<string>::const_iterator it = paths.begin(); it != paths.end();
127 if (argc > 0 && argv != 0)
findArguments(
"-typeslib", libs, argc, argv);
128 for (vector<string>::const_iterator it = libs.begin(); it != libs.end();
130 cerr <<
"Loading types " << *it << endl;
136 char* envSolversPath = getenv(
"G2O_SOLVERS_DIR");
137 string solversPath = G2O_DEFAULT_SOLVERS_DIR_;
139 if (envSolversPath != NULL) {
140 solversPath = envSolversPath;
143 if (dladdr(&info, &info) != 0) {
146#elif (defined WINDOWS)
147 char libFilename[MAX_PATH + 1];
149 if (instance && GetModuleFileName(instance, libFilename, MAX_PATH) > 0) {
156 for (vector<string>::const_iterator it = paths.begin(); it != paths.end();
162 if (argc > 0 && argv != 0)
findArguments(
"-solverlib", libs, argc, argv);
163 for (vector<string>::const_iterator it = libs.begin(); it != libs.end();
165 cerr <<
"Loading solver " << *it << endl;
Loading libraries during run-time.
bool openLibrary(const std::string &filename)
int openLibraries(const std::string &directory, const std::string &pattern="")
static const string TYPES_PATTERN
static void fakeFunctionForWindows()
#define G2O_LIBRARY_POSTFIX
static const string SOLVERS_PATTERN
void findArguments(const std::string &option, vector< string > &args, int argc, char **argv)
void loadStandardTypes(DlWrapper &dlTypesWrapper, int argc, char **argv)
std::vector< std::string > strSplit(const std::string &str, const std::string &delimiters)
void loadStandardSolver(DlWrapper &dlSolverWrapper, int argc, char **argv)
std::string getDirname(const std::string &filename)