Python 3.5。我似乎无法使用ctypes传递目录名称(字符串)。相反,当我调用该函数时,文件将保存在运行程序的任何地方。它不会将文件保存到指定的路径。
我打电话的功能:
set_directory_path('C:\\Users\\myName\\Desktop')
设置目录的代码
def set_directory_path(filedirectory):
f = shim.set_directory_path
print(filedirectory)
arg = ct.c_char_p(filedirectory)
print(arg)
result = f(arg)
这给了我以下错误
TypeError:期望的字节或整数地址而不是str实例
所以我做了以下修改
def set_directory_path(filedirectory):
f = shim.set_directory_path
print(filedirectory)
arg = ct.c_char_p(filedirectory.encode('utf-8'))
print(arg)
result = f(arg)
控制台输出是:
C:\Users\myName\Desktop
c_char_p(4999760)
所以enconding utf-8改变了c_char_p(4999760)的路径?我这样做了吗?这是制作dll的c ++代码:
PCDLL_API set_directory_path( const char *path ){
error_status_type rtn = FAILURE;
if( 0 != path ){
g_dir_path = path;
int last_index = g_dir_path.length()-1;
if( 0 < last_index ){
if( '\\' != g_dir_path[last_index] ){
g_dir_path += "\\";
}
rtn = SUCCESS;
}
}
return rtn;
}