2015-09-29 6 views
5

कैसे सही ढंग से बनाने के लिए मैं निम कोड से एक डीएलएल बनाना चाहता हूं। लेकिन मैं "निममेन इन्नर" की तुलना में कुछ अन्य निर्यात पंजीकृत करने में विफल रहा। यहां तक ​​कि अगर मैं इस सरल उदाहरण अपने काम नहीं कर प्रयास करें:सही ढंग से निम/निमरोड विंडोज़ डीएल

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 का उपयोग का निरीक्षण करने के। मैंने पाइथन प्रकार के साथ डीएलएल लोड करने का भी प्रयास किया है, लेकिन मेरे निर्यात में से कोई भी दिखाया नहीं गया है या कॉल करने योग्य है। मैं परिणामी डीएल में एक हेक्सेडिटर के साथ 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 
संबंधित मुद्दे