【发布时间】:2020-05-30 05:24:13
【问题描述】:
我正在尝试在 Windows 10 (x64) 中的 python 中加载库。
用于生成测试库的cpp文件为:
extern "C" int check() {
return(1);
}
然后我使用命令生成 dll(在 x64 Native Tools 命令提示符中):
cl /c mylib.cpp
link /dll /machine:x64 mylib.obj
生成文件 mylib.dll。 然后在python中,初始化显示如下字符串:
Python 3.7.4 (default, Aug 9 2019, 18:34:13) [MSC v.1915 64 bit (AMD64)] :: Anaconda, Inc. on win32
我运行以下命令:
import ctypes
lib=ctypes.CDLL("mylib.dll")
lib.check.restype=(ctypes.c_int,)
最后一个命令失败了,说不能识别check。
我还尝试了lib._check 并使用测试C 文件代替cpp,结果相同,还尝试使用ctypes.WinDLL 代替ctypes.CDLL。
怎么了? Python 是 x64 以及库 mylib.dll...
如果我这样做:
ctypes.windll.msvcrt.getchar()
功能正常...这里我使用 MSVCRT 库,当我加载 ctypes 时会自动访问它。
我应该以不同的方式编译我的库吗?
【问题讨论】: