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名称.
我错过了什么?
该dynlib编译不见了。所以我将定义更改为:
proc Hellow(): cint {.exportc,dynlib.} =
echo("hello")
result = 1
Run Code Online (Sandbox Code Playgroud)
现在可以了。
注意:如果将它与pythons ctypes和函数参数一起使用ctypes.cdll.LoadLibrary,请确保使用而不是ctypes.windll.LoadLibrary:
Python ctypes参数错误
并声明如下函数:
proc myinit(procid : int) {.cdecl,exportc,dynlib.} =
discard
Run Code Online (Sandbox Code Playgroud)