私は次のように、C++ から python に文字列の配列を返そうとしています:
// c++ code
extern "C" char** queryTree(char* treename, float rad, int kn, char*name, char *hash){
//.... bunch of other manipulation using parameters...
int nbr = 3; // number of string I wish to pass
char **queryResult = (char **) malloc(nbr* sizeof(char**));
for (int j=0;j<nbr;j++){
queryResult[j] = (char *) malloc(strlen(results[j]->id)+1);
if(queryResult[j]){
strcpy(queryResult[j], "Hello"); // just a sample string "Hello"
}
}
return queryResult;
}
// output in C++:
Hello
Hello
Hello
以下はpythonのコードです:
libtest = ctypes.c_char_p * 3;
libtest = ctypes.CDLL('./imget.so').queryTree("trytreenew64", ctypes.c_float(16), ctypes.c_int(20), ctypes.c_char_p(filename), ctypes.c_char_p(hashval))
print libtest
Pythonの出力は整数です:?
私はpythonの初心者です。私はPython側で何か間違ったことをしていることを知っています。char* を渡している他のいくつかの質問を見てきましたが、char** で機能させることができませんでした。私は何時間も努力しています。どんな助けでも大歓迎です。
19306416