【发布时间】:2011-01-14 02:48:41
【问题描述】:
我的以下 C 代码运行良好,直到我的 Python 代码尝试将一个 char 指针数组传递给它。
我得到的输出是
file_name 是 python-file
另外 3 个字符串没有被打印出来。我错过了什么?
C 代码
#include <iostream>
#include "c_interface.h"
int foo(const char* file_name, const char** names) {
std::cout << "The file_name is " << file_name << std::endl;
while (*names) {
std::cout << "The name is " << *names << std::endl;
names++;
}
return 0;
}
/*
int main() {
const char *c[] = {"123gh", "456443432", "789", 0};
foo("hello", c);
getchar();
}
*/
Python 代码
#!c:/Python27/python.exe -u
from ctypes import *
name0 = "NAME0"
name1 = "NAME1"
name2 = "NAME2"
names = ((c_char_p * 1024) * 4)()
names[0].value = name0
names[1].value = name1
names[2].value = name2
names[3].value = 0
libc = CDLL("foo.dll")
libc.foo("python-file", names)
【问题讨论】: