如何正确创建一个nim / nimrod windows dll
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何正确创建一个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_main libh4x.nim
编译了它
我用Nim Compiler Version 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
以上是关于如何正确创建一个nim / nimrod windows dll的主要内容,如果未能解决你的问题,请参考以下文章