Как получить значение в Python, используя адрес отправленного из C ++? - PullRequest
0 голосов
/ 07 ноября 2019

В C ++ я беру переменную типа int и передаю ее адрес в python. Адрес является шестнадцатеричным и передается Python в виде строки. В питоне я конвертирую его в тип int и использую ctypes.cast (). Но это вылетает.

В Python,

class testClass:
        def testMethod(actorArg, stringArg):
            a = int(stringArg,16)     #stringArg is the hex address in string type
            print(type(a))            #gives int type
            print(ctypes.cast(a, ctypes.py_object).value)    #crashes!

Основная идея была из этого ctypes в Python, где я это сделал,

import ctypes

s = 10
print(id(s))     #gives the address of s
print(ctypes.cast(id(s), ctypes.py_object).value)   #gives the value from address

Короче говоря, Я хочуполучить значение в Python, используя адрес, отправленный с C ++. Есть идеи, где я делаю неправильно? Заранее спасибо.

1 Ответ

0 голосов
/ 08 ноября 2019

Если a является правильным адресом целого числа C в том же процессе, то вы хотите:

value = ctypes.c_int.from_address(a)

Ваш второй код работает с s, поскольку s является * Python целое число, а не C целое число, а id(s) (по крайней мере, CPython , как деталь реализации), возвращает адрес объекта Python.

...