加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

如何正确创建一个nim / nimrod windows dll

发布时间:2020-12-13 21:33:43 所属栏目:Windows 来源:网络整理
导读:我想用nim代码创建一个dll. 但我没有注册其他一些出口而不是“NimMainInner”. 即使我尝试这个简单的例子它不工作: proc Hellow(): cint {.exportc.} = echo("hello") return 1 我用nim c –app编译了它:lib libh4x.nim 和nim c -d:release –app:lib –
我想用nim代码创建一个dll.
但我没有注册其他一些出口而不是“NimMainInner”.
即使我尝试这个简单的例子它不工作:
proc Hellow(): cint {.exportc.} =
  echo("hello")
  return 1

我用nim c –app编译了它:lib libh4x.nim
和nim c -d:release –app:lib –no_main libh4x.nim

我使用Nim编译器版本0.11.2(2015-05-04)[Windows:i386]

检查dll我使用dllexp.exe.
我也尝试用python ctypes加载dll,但我的导出都没有显示或可调用.不过,我可以使用hexeditor在结果dll中看到proc名称.

我错过了什么?

dynlib pragma失踪了.所以我把定义改为:
proc Hellow(): cint {.exportc,dynlib.} =
  echo("hello")
  result = 1

现在它有效.

注意:如果你使用pythons ctypes和函数参数,请确保使用ctypes.cdll.LoadLibrary而不是ctypes.windll.LoadLibrary:
Python ctypes argument errors

并声明这样的函数:

proc myinit(procid : int) {.cdecl,exportc,dynlib.} =
  discard

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读