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

ent*_*ast 5 windows dll nim-lang

我想用nim代码创建一个dll.但我没有注册其他一些出口而不是"NimMainInner".即使我尝试这个简单的例子它不工作:

proc Hellow(): cint {.exportc.} =
  echo("hello")
  return 1
Run Code Online (Sandbox Code Playgroud)

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

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

我错过了什么?

ent*_*ast 5

dynlib编译不见了。所以我将定义更改为:

proc Hellow(): cint {.exportc,dynlib.} =
  echo("hello")
  result = 1
Run Code Online (Sandbox Code Playgroud)

现在可以了。

注意:如果将它与pythons ctypes和函数参数一起使用ctypes.cdll.LoadLibrary,请确保使用而不是ctypes.windll.LoadLibraryPython ctypes参数错误

并声明如下函数:

proc myinit(procid : int) {.cdecl,exportc,dynlib.} =
  discard
Run Code Online (Sandbox Code Playgroud)