2015-12-04 11:09:24 +00:00
|
|
|
//
|
|
|
|
// Dynamic loader for unicorn shared library in windows and linux.
|
|
|
|
// This was made for v0.9 of unicorn.
|
|
|
|
// Newer versions of unicorn may require changes to these files.
|
|
|
|
//
|
|
|
|
// Windows Notes:
|
|
|
|
// If an absolute path to unicorn.dll is passed into uc_dyn_load() it will
|
|
|
|
// still try to load the rest of the dependent dlls (ie libglib-2.0-0.dll etc)
|
|
|
|
// from standard dll paths. This is usually the directory that the main
|
|
|
|
// exe file, that loaded unicorn.dll, is in. This is standard behaviour for
|
|
|
|
// Windows dll files, and not specific to unicorn dlls.
|
|
|
|
//
|
|
|
|
// So putting all dlls in their own directory and then attempting to load
|
|
|
|
// unicorn.dll from that directory via an absolute path will cause
|
|
|
|
// uc_dyn_load() to fail.
|
|
|
|
//
|
|
|
|
// The easiest way around this is to place all dlls in the same directory
|
|
|
|
// as your main exe file. Other ways around this are using various flags
|
|
|
|
// for LoadLibraryEx() or by calling SetDllDirectory().
|
|
|
|
//
|
|
|
|
// LoadLibraryEx info:
|
|
|
|
// https://msdn.microsoft.com/en-us/library/windows/desktop/ms684179(v=vs.85).aspx
|
|
|
|
// SetDllDirectory() info:
|
|
|
|
// https://msdn.microsoft.com/en-us/library/windows/desktop/ms686203(v=vs.85).aspx
|
|
|
|
//
|
|
|
|
// Zak Escano - November 2015
|
|
|
|
//
|
|
|
|
|
2015-12-05 04:20:22 +00:00
|
|
|
#ifndef UNICORN_DYNLOAD_H
|
|
|
|
#define UNICORN_DYNLOAD_H
|
2015-12-04 11:09:24 +00:00
|
|
|
|
|
|
|
// Undefine shared here so that functions aren't defined as: "__declspec(dllexport)"
|
|
|
|
#ifdef UNICORN_SHARED
|
|
|
|
#undef UNICORN_SHARED
|
|
|
|
#endif
|
|
|
|
#include "unicorn.h"
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
extern "C" {
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
Dynamically load shared library.
|
|
|
|
Check the notes at the top for info regarding dll file locations in windows.
|
|
|
|
|
|
|
|
@path: path to shared library file. (NULL to use default path)
|
|
|
|
@flags: system specific flags for loading shared library file. (0 for default)
|
|
|
|
|
|
|
|
@return true on success, false if failed.
|
|
|
|
*/
|
|
|
|
bool uc_dyn_load(const char* path, int flags);
|
|
|
|
|
|
|
|
/*
|
|
|
|
Free resources when done using shared library.
|
|
|
|
|
|
|
|
@return true on success, false if failed.
|
|
|
|
*/
|
|
|
|
bool uc_dyn_free(void);
|
|
|
|
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
|
2015-12-05 04:20:22 +00:00
|
|
|
#endif // UNICORN_DYNLOAD_H
|
2015-12-04 11:09:24 +00:00
|
|
|
|