ctypes,错误地传递一个字符串?无法更改文件路径

时间:2016-06-21 19:04:28

标签: python c++ ctypes

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;
}

0 个答案:

没有答案