2015-09-29 26 views
5

nimコードからdllを作成します。 しかし、私は "NimMainInner"よりもいくつかの輸出を登録できませんでした。 私はこの単純な例でそのが働いてないようにしようとしても:正しくnim/nimrod windows dllを作成するには

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

を私は私はdllexp.exeを使用するDLLを検査するNim Compiler Version 0.11.2 (2015-05-04) [Windows: i386]

を使用nim c --app:lib libh4x.nimnim c -d:release --app:lib --no_main libh4x.nim

でそれをまとめました。 私はまた、Pythonのctypesでdllを読み込もうとしましたが、私のエクスポートは表示されないか、呼び出し可能です。私はhexeditorを使用して、結果のDLLのproc名を確認することができます。

私はここで何が欠けていますか?

答えて

4

dynlibプラグマがありませんでした。そこで、定義を次のように変更しました:

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

今は動作します。

注:あなたはニシキヘビのctypesと関数のパラメータを持つとこれを使用する場合はctypes.windll.LoadLibraryの代わりにctypes.cdll.LoadLibraryを使用してください: Python ctypes argument errors

と、次のように関数を宣言するために:

proc myinit(procid : int) {.cdecl,exportc,dynlib.} = 
    discard 
関連する問題