我从创建MathFuncsDll.dll MSDN DLL例子并运行调用的.cpp工作的罚款。 现在,想在IPython的与喜欢的ctypes加载此
import ctypes
lib = ctypes.WinDLL('MathFuncsDll.dll')
在正确的文件夹产量为
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe4 in position 28: ordinal not in range(128)
同样在Python Shell此产量
WindowsError: [Error 193] %1 is not a valid Win32 application
我应该怎么改? 嗯,这可能是Win 7的64位与32位的一些DLL或正确的事情? 我将在后面检查的时候我再没有来得及。
ctypes
不与C ++,其MathFuncsDLL示例被写入工作。
相反,用C,或至少输出一个“C”的界面:
#ifdef __cplusplus
extern "C" {
#endif
__declspec(dllexport) double Add(double a, double b)
{
return a + b;
}
#ifdef __cplusplus
}
#endif
还要注意的是,调用约定默认为__cdecl
,所以使用CDLL
代替WinDLL
(使用__stdcall
调用约定):
>>> import ctypes
>>> dll=ctypes.CDLL('server')
>>> dll.Add.restype = ctypes.c_double
>>> dll.Add.argtypes = [ctypes.c_double,ctypes.c_double]
>>> dll.Add(1.5,2.7)
4.2