博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Nim编译和使用DLL
阅读量:6883 次
发布时间:2019-06-27

本文共 852 字,大约阅读时间需要 2 分钟。

hot3.png

# plugin.nimvar data = 0{.push dynlib exportc.}proc setup*(num:int) =  data = num  echo "Plugin Setup!"proc getData*: int = data{.pop.}
# app.nimimport dynlibtype  SetupProc = proc(num:int) {.nimcall.}  GetDataProc = proc(): int {.nimcall.}proc testPlugin(path:string) =  let lib = loadLib(path)  if lib != nil:    let setupAddr = lib.symAddr("setup")    let getDataAddr = lib.symAddr("getData")        if setupAddr != nil and getDataAddr != nil:      let setup = cast[SetupProc](setupAddr)      let getData = cast[GetDataProc](getDataAddr)            setup(123)      echo "Plugin Data: ", getData()        unloadLib(lib)testPlugin("./libplugin.so") # unix pathtestPlugin("./libplugin.dylib")
$ nim c --app:lib plugin$ nim c -r appPlugin Setup!Plugin Data: 123

nimcall其实就是fastcall.

如果想使用nim来写dll可以参考:

代码转自

转载于:https://my.oschina.net/angluca/blog/534438

你可能感兴趣的文章
【C#|.NET】从控制反转(依赖注入)想到事件注入(非AOP)
查看>>
Linux修改用户所在组方法
查看>>
ansible (2.4.2.0) API python调用重写 | 适用于 web
查看>>
NET C#创建WINDOWS系统用户
查看>>
阿里ubuntu云主机 安装第三方源代理出现403的问题
查看>>
Echart数据报表
查看>>
linux的functions之daemon函数详解
查看>>
安装jenkins
查看>>
Windows server 2008访问权限应用规则
查看>>
本地YUM源配置-Redhat Enterprise 5.9
查看>>
windows注册表修改同步时间频率
查看>>
ssh框架搭建错误集合
查看>>
《防SSH爆破脚本》
查看>>
路由器本地权限划分--进程赋权
查看>>
【android】使用SharedPreferences存取复杂数据
查看>>
希望这些建议,能推动管理软件开发的规范化进程 (数据库版本、修改记录)
查看>>
VSTS的安装
查看>>
音视频性能指标介绍
查看>>
实战ISA2004+三层交换机实现多VLAN互通(20130327修正部分错误)
查看>>
AS3.0中的显示编程(二)-- DisplayObject类
查看>>