如何正确创build一个nim / nimrod的Windows DLL

我想从nim代码创build一个dll。 但是我没有注册一些其他出口比“NimMainInner”。 即使我尝试这个简单的例子,它不工作:

proc Hellow(): cint {.exportc.} = echo("hello") return 1 

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

我使用Nim Compiler Version 0.11.2 (2015-05-04) [Windows: i386]

检查我使用dllexp.exeDLL。 我也试图用python ctypes加载dll,但是我的导出都没有显示或可调用。 不过,我可以用hexeditor在生成的dll中看到proc的名字。

我在这里错过了什么?

Solutions Collecting From Web of "如何正确创build一个nim / nimrod的Windows DLL"

dynlib编译错过了。 所以我把定义改为:

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

现在它工作。

注意:如果你使用pythons ctypes和函数参数,可以使用ctypes.cdll.LoadLibrary代替ctypes.windll.LoadLibrary : Python ctypes参数错误

并声明这样的功能:

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