#include
__declspec( dllexport ) int func_test(unsigned short anInputSignal1[], int nLen1, unsigned short anInputSignal2[], int nLen2, unsigned short *pnOutput, int *pLen);
int func_test(unsigned short anInputSignal1[], int nLen1, unsigned short anInputSignal2[], int nLen2, unsigned short *pnOutput, int *pLen)
{
int i = 0;
for (i = 0; i < nLen1; i++)
{
printf("%d, ", anInputSignal1[i]);
}
printf("\n");
for (i = 0; i < nLen2; i++)
{
printf("%d, ", anInputSignal2[i]);
}
printf("\n");
for (i = 0; i < *pLen; i++)
pnOutput[i] = i;
*pLen = 1;
return 0;
}
编译成为 dll,放到python工程文件夹下,test.py内容如下:
import ctypes
import array
inputSignal1 = array.array('H')
inputSignal1.fromlist(range(1, 10))
inputSignal2 = array.array('H')
inputSignal2.fromlist(range(11, 20))
cInputArrayType = (ctypes.c_ushort * len(inputSignal1))
cInputSignal1 = cInputArrayType(*inputSignal1)
cInputSignal2 = cInputArrayType(*inputSignal2)
cOutputArray = (ctypes.c_ushort * 10)()
cOutLen = ctypes.c_int(10)
mydll = ctypes.CDLL('ctypes.test.dll')
mydll.func_test(cInputSignal1,
ctypes.c_int(len(inputSignal1)),
cInputSignal2,
ctypes.c_int(len(inputSignal2)),
cOutputArray,
ctypes.byref(cOutLen))
print cOutLen.value
for data in cOutputArray:
print data
输出如下:
1, 2, 3, 4, 5, 6, 7, 8, 9,
11, 12, 13, 14, 15, 16, 17, 18, 19,
1
0
1
2
3
4
5
6
7
8
9
剩下的数据类型可以参考文档,写的挺好的,就是初始化部分开始让我有些纠结,呵呵。