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

时间:2015-09-29 08:30:25

标签: windows dll nim

我想用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 Compiler Version 0.11.2 (2015-05-04) [Windows: i386]

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

我错过了什么?

1 个答案:

答案 0 :(得分:4)

dynlib pragma丢失了。所以我把定义改为:

proc Hellow(): cint {.exportc,dynlib.} =
  echo("hello")
  result = 1

现在可行。

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

并声明这样的函数:

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