网上搜索了一下,有人提供了办法,测试通过:

public partial class MainWindow : Gtk.Window
{public MainWindow() : base(Gtk.WindowType.Toplevel){Build();}protected void OnDeleteEvent(object sender, DeleteEventArgs a){Application.Quit();a.RetVal = true;}const string NATIVE_PATH = "./libtioplugininterface.so";const string NATIVE_INIT = "init";[DllImport("libdl.so")]protected static extern IntPtr dlopen(string filename, int flags);[DllImport("libdl.so")]protected static extern IntPtr dlsym(IntPtr handle, string symbol);[DllImport("libdl.so")]protected static extern IntPtr dlclose(IntPtr handle);const int RTLD_NOW = 2; // for dlopen's flagsprivate delegate int native_init(int param);static bool NativeInit(){IntPtr hModule = dlopen(NATIVE_PATH, RTLD_NOW);if (hModule.Equals(IntPtr.Zero)){Console.WriteLine("LoadLibrary fail=" + NATIVE_PATH);return false;}Console.WriteLine("dlopen() OK");IntPtr address = dlsym(hModule, NATIVE_INIT);if (address == IntPtr.Zero){Console.WriteLine("GetProcAddress fail=" + NATIVE_INIT);return false;}Console.WriteLine("dlsym() OK");Delegate proc = Marshal.GetDelegateForFunctionPointer(address, typeof(native_init));int result = ((native_init)proc)(0);Console.WriteLine("native_init() OK");dlclose(hModule);return true;}protected void OnButton2Pressed(object sender, EventArgs e){this.button2.Visible = false;NativeInit();}
}

LINUX C# 加载本地库的范例代码相关推荐

  1. hadoop 2.x安装:不能加载本地库 - 解决libc.so.6 version GLIBC_2.14 not found问题

    hadoop 2.x安装:不能加载本地库 - 解决libc.so.6 version GLIBC_2.14 not found问题 参考文章: (1)hadoop 2.x安装:不能加载本地库 - 解决 ...

  2. linux dlopen 内存,Linux下加载库的有关问题(dlopenm, dlsym)

    Linux下加载库的问题(dlopenm, dlsym) 如题, 程序中发现load库成功,但是加载函数的时候报错: undefined symbol functionname 是很简单的一个东西,因 ...

  3. Linux模块加载流程及如何让系统开机自动加载模块

    Linux模块加载 Linux系统加载哪些内核模块,和配置文件有关系. 模块保存在/lib/modules/下. 使用/etc/modules-load.d/来配置系统启动时加载哪些模块. 使用/et ...

  4. 备份linux分区到usb,将Linux引导加载程序备份到USB的方法

    本文介绍如何将Linux引导加载程序备份到USB以应对紧急情况.大多数Linux操作系统使用的引导加载程序称为Grub,这是一个简单的工具,可以配置为在PC启动时从菜单启动Linux发行版以及其他操作 ...

  5. LINUX配置文件加载顺序

    LINUX配置文件加载顺序 shell启动方式 启动类型 如何判断是否为交互式 Shell? 有两种方式 判断是否为登录式 Shell ? 同时判断交互式和登录式 配置文件启动 配置文件加载说明 启动 ...

  6. Linux可加载内核模块(LKM)(转载)

    转载: 漏天剑 文章导航: 为校长杯流尽最后一滴血, Lkm注射, 返回首页 Linux可加载内核模块(LKM) Linux可加载内核模块完全版 --黑客.病毒程序编写者和系统管理员的概念性指南 作者 ...

  7. 跟我一起玩《linux内核设计的艺术》第1章(二)——linux内存加载和16位实模式使命的终结

    经过折腾了整整一篇的BIOS,总算可以跑linux 0.11内核源码了.第一个执行的是bootsect.s,如果现在你还没有下载linux 0.11的源码就赶紧去下载.如果自己懒得找,可以参见我下一篇 ...

  8. Linux如何加载与卸载U盘

    Linux如何加载与卸载U盘   第一:以root用户登陆 先加载USB模块 modprobe usb-storage 用fdisk -l 看看U盘的设备 假如U盘是sda1   第二:确定在 目录 ...

  9. linux驱动加载流程分析

    linux驱动加载流程分析 内核是如何加载驱动的,有些是编译到内核里面,有些事编译成ko,让系统自动加载.总的说来,在Linux下可以通过两种方式加载驱动程序:静态加载和动态加载. 静态加载就是把驱动 ...

  10. linux 如何加载本地镜像至docker

    在 Linux 上加载本地镜像至 Docker 可以使用 "docker load" 命令. 步骤如下: 将本地镜像打包成 tar 文件: sudo dockersave -o m ...

最新文章

  1. iOS 疑难杂症— — 收到推送显示后自动消失的问题
  2. 杨威(为奥运冠军名字作诗)
  3. 手把手教你安装Navicat——靠谱的Navicat安装教程
  4. 学生电脑哪个牌子好_泡脚足浴盆哪个牌子好?家用足浴盆哪个品牌好?足浴盆哪个牌子最安全?...
  5. boost::fusion::find用法的测试程序
  6. 模块化数据中心还需精工细作
  7. 快速入门人工智能的秘诀,都在这里了!
  8. selenium 使用js执行脚本儿链接整理
  9. log4j2配置文件log4j2.xml
  10. H12-211数通HCNA题库解析(二)
  11. 第三方银联支付接口对接_第三方支付接口集成安装,网站支付接口对接,网站收款接口...
  12. msl3等级烘烤时间_MSL 湿敏等级对应表
  13. 打开IE浏览器页面默认为标准模式的方法
  14. 手把手带你撸一个校园APP(一):项目简介
  15. sem学习的内容sem学习步骤sem适合的人群
  16. 安卓默认打开指定apk的无障碍权限
  17. IntelliJ IDEA 使用svn教程
  18. Leetcode 2214. Minimum Health to Beat Game [Python]
  19. web3j智能合约错误:java.lang.ArrayIndexOutOfBoundsException
  20. Office LTSC 专业增强版 2021 显示“你的许可证并非XX”横幅解决方法(亲测有效,2016专业增强版同样适用,其他版本自行测试)

热门文章

  1. 法斗几个月长鼻筋_带锯罢工了,木工小哥检查问题出在哪里?分享带锯使用九个月感受...
  2. oracle dblink性能,谈谈Oracle为2019年埋下的雷:Oracle关于DBLINK的预警
  3. 通讯工程考研考计算机专业跨度大么,通信工程专业,与自动化专业差别大吗?考研可以跨考吗?...
  4. c语言python字典结构_在python中创建类似C语言中struct的结构来保存数据
  5. [知识竞赛策划方案][图]何用PPT制作知识竞赛所需要的题库?作为一个普通的单位,由于不具备电视台专用的比赛平台,如果要搞一场极致专业的知识竞赛?同时花钱最少?
  6. 网络 如何解决输入路由器管理地址192.168.1.1进不去
  7. Create Table Like Mapping: 基于类型推断的建表方法
  8. 并发控制技术手段之时间戳(二)
  9. bugfree如何修改Bug7种解决方案的标注方法 .
  10. hudson构建配置