Je veux passer une liste de chaînes python à une fonction C en attendant constchar **. J'ai vu la question et la solution here mais cela ne semble pas fonctionner pour moi. Le code exemple suivant:Ctypes Python: passage à la fonction avec l'argument 'const char **'
argList = ['abc','def']
options = (ctypes.c_char_p * len(argList))()
options[:] = argList
donne l'erreur suivante:
Traceback (most recent call last):
File "<interactive input>", line 1, in <module>
TypeError: string or integer address expected instead of str instance
Qu'est-ce que je fais mal?
Addendum:
Il semble y avoir un consensus, que ce code devrait fonctionner. Voici comment reproduire le problème.
Les quatre lignes suivantes tapées dans ma ligne de commande Python illustrent mon problème.
Python 3.2 (r32:88445, Feb 20 2011, 21:29:02) [MSC v.1500 32 bit (Intel)] on win
32
Type "help", "copyright", "credits" or "license" for more information.
>>> from ctypes import *
>>> argList = ['abc', 'def']
>>> options = (c_char_p * len(argList))()
>>> options[:] = argList
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: string or integer address expected instead of str instance
>>>
Où est l'erreur? Ce code semble fonctionner. –
Sur ma machine ce n'est pas le cas. Quel système utilisez-vous? J'utilise Python 3.2 sur WinXP. - Cela pourrait-il faire une différence? – ARF
Essayez 'argList = [b'abc ', b'def']'. –