123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- using System;
- using System.Collections.Generic;
- using System.Runtime.InteropServices;
- using System.Text;
- namespace NativeLibraryLoader.Linux
- {
- internal class UnixNativeLoader : INativeLoader
- {
- void INativeLoader.CoreFreeLibrary(IntPtr intPtr)
- {
- dlclose(intPtr);
- }
- IntPtr INativeLoader.CoreGetProcAddress(IntPtr intPtr, string entryPoint)
- {
- return dlsym(intPtr, entryPoint);
- }
- IntPtr INativeLoader.CoreLoadLibrary(string path)
- {
- return dlopen(path, RTLD_NOW);
- }
- private const string LibName = "libdl";
- const int RTLD_NOW = 0x002;
- [DllImport(LibName)]
- static extern IntPtr dlopen(string fileName, int flags);
- [DllImport(LibName)]
- static extern IntPtr dlsym(IntPtr handle, string name);
- [DllImport(LibName)]
- static extern int dlclose(IntPtr handle);
- [DllImport(LibName)]
- static extern string dlerror();
- public string CoreGetLastError()
- {
- return dlerror();
- }
- }
- }
|