<p>下面是一个完全适用于windows&V的示例,如果您想在linux上试用,只需更改数据类型并删除windows标头:</p>
<p><strong>演示.h</strong></p>
<pre><code>#include <windows.h>
ULONG g_version = 0x3;
__declspec(dllexport) void set_version(ULONG version);
__declspec(dllexport) ULONG get_version();
__declspec(dllexport) void get_version_by_reference(ULONG* version);
</code></pre>
<p><strong>演示.c</strong></p>
<pre><code>// build: cl.exe /D_USRDLL /D_WINDLL demo.c /link /DLL /OUT:demo.dll
#include "demo.h"
void set_version(ULONG version) {
g_version=version;
}
ULONG get_version() {
return g_version;
}
void get_version_by_reference(ULONG* version) {
*version=(ULONG)g_version;
}
</code></pre>
<p><strong>演示.py</strong></p>
<pre><code>import ctypes
import sys
from ctypes import *
mydll = cdll.LoadLibrary('demo.dll')
# __declspec(dllexport) void set_version(ULONG version);
mydll.set_version.restype = None
mydll.set_version.argtypes = [c_ulong]
# __declspec(dllexport) void get_version();
mydll.get_version.restype = c_ulong
mydll.get_version.argtypes = []
# __declspec(dllexport) void get_version_by_reference(ULONG* version);
mydll.get_version_by_reference.restype = None
mydll.get_version_by_reference.argtypes = [POINTER(c_ulong)]
print "Step1, testing get_version"
print '-'*80
print mydll.get_version()
print "\nStep2, testing set_version & get_version"
print '-'*80
mydll.set_version(c_ulong(0x05))
print mydll.get_version()
print "\nStep3, testing get_version_by_reference"
print '-'*80
vers = c_ulong(0x09)
print "before assigning...",vers.value
mydll.get_version_by_reference(vers)
print "after assigning...",vers.value
</code></pre>
<p>希望它能帮助你开始。你知道吗</p>