加入收藏 | 设为首页 | 会员中心 | 我要投稿 甘南站长网 (https://www.0941zz.com/)- 科技、行业物联网、开发、云计算、云管理!
当前位置: 首页 > 综合聚焦 > Windows > 正文

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

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

我想用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

(编辑:甘南站长网)

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

    推荐文章
      热点阅读