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

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

作者: dawei

【声明】:永州站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

为您推荐

联系我们

联系我们

0577-28828765

在线咨询: QQ交谈

邮箱: xwei067@foxmail.com

工作时间:周一至周五,9:00-17:30,节假日休息

返回顶部