123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- #ifndef BASE_NATIVE_LIBRARY_H_
- #define BASE_NATIVE_LIBRARY_H_
- #include <string>
- #include "base/base_export.h"
- #include "base/files/file_path.h"
- #include "base/strings/string_piece.h"
- #include "build/build_config.h"
- #if defined(OS_WIN)
- #include <windows.h>
- #elif defined(OS_APPLE)
- #import <CoreFoundation/CoreFoundation.h>
- #endif
- namespace base {
- #if defined(OS_WIN)
- using NativeLibrary = HMODULE;
- #elif defined(OS_APPLE)
- enum NativeLibraryType {
- BUNDLE,
- DYNAMIC_LIB
- };
- enum NativeLibraryObjCStatus {
- OBJC_UNKNOWN,
- OBJC_PRESENT,
- OBJC_NOT_PRESENT,
- };
- struct NativeLibraryStruct {
- NativeLibraryType type;
- CFBundleRefNum bundle_resource_ref;
- NativeLibraryObjCStatus objc_status;
- union {
- CFBundleRef bundle;
- void* dylib;
- };
- };
- using NativeLibrary = NativeLibraryStruct*;
- #elif defined(OS_POSIX) || defined(OS_FUCHSIA)
- using NativeLibrary = void*;
- #endif
- struct BASE_EXPORT NativeLibraryLoadError {
- #if defined(OS_WIN)
- NativeLibraryLoadError() : code(0) {}
- #endif
-
- std::string ToString() const;
- #if defined(OS_WIN)
- DWORD code;
- #elif defined(OS_POSIX) || defined(OS_FUCHSIA)
- std::string message;
- #endif
- };
- struct BASE_EXPORT NativeLibraryOptions {
- NativeLibraryOptions() = default;
- NativeLibraryOptions(const NativeLibraryOptions& options) = default;
-
-
-
-
-
- bool prefer_own_symbols = false;
- };
- BASE_EXPORT NativeLibrary LoadNativeLibrary(const FilePath& library_path,
- NativeLibraryLoadError* error);
- #if defined(OS_WIN)
- BASE_EXPORT NativeLibrary
- LoadSystemLibrary(FilePath::StringPieceType name,
- NativeLibraryLoadError* error = nullptr);
- BASE_EXPORT NativeLibrary
- PinSystemLibrary(FilePath::StringPieceType name,
- NativeLibraryLoadError* error = nullptr);
- #endif
- BASE_EXPORT NativeLibrary LoadNativeLibraryWithOptions(
- const FilePath& library_path,
- const NativeLibraryOptions& options,
- NativeLibraryLoadError* error);
- BASE_EXPORT void UnloadNativeLibrary(NativeLibrary library);
- BASE_EXPORT void* GetFunctionPointerFromNativeLibrary(NativeLibrary library,
- StringPiece name);
- BASE_EXPORT std::string GetNativeLibraryName(StringPiece name);
- BASE_EXPORT std::string GetLoadableModuleName(StringPiece name);
- }
- #endif
|