0
C++ 프로그램에 임베드 된 작은 파이썬 스크립트가 있습니다. 파이썬 개체를 C++ 프로그램에 노출하고 C++ 변수에 값을 복사 한 후이를 구조체에 유형 변환하려고 시도했지만 예상 값을 얻지 못했습니다. 무엇이 잘못 되었습니까?] 한 시스템에서 다른 시스템으로 데이터를 보내려면 소켓 프로그래밍을 위해 python을 사용하고 있습니다.파이썬 임베딩 후에 구조체에 타입 변환
코드는 다음과 같습니다.
#include
#include
struct overhead{
uchar8 flags;
uint16 seqNo, timeDiff, threshold, length;
};
struct payload{
float forceX,forceY,forceZ,positionX,positionY,positionZ;
};
struct packet{
overhead fields;
payload data;
};
const char * msg;
int main(){
packet pack;
/* assign values to members of packet
pack.fields.threshold =
pack.data.forceZ = */
msg = (const char *) &pack;
PyObject *PyMain = PyImport_AddModule("__main__");
PyObject *globals = PyModule_GetDict(PyMain);
PyObject *string = PyString_FromString(msg);
PyDict_SetItemString(globals, "send", string);
const char* sendPy = "UDPSock.sendto(send,('10.107.35.167',2000))";
PyRun_SimpleString(sendPy);
PyObject *temp = PyDict_GetItemString(globals, "send");
const char* x = PyString_AsString(temp);
packet *pa = (packet *) x;
cout << pa->data.forceZ << endl;
}
그러나 출력 값은 할당 된 값과 다릅니다. 아무도 잘못 설명 할 수 있습니까?
미리 감사드립니다.
통찰력을 가져 주셔서 감사합니다. PyString_FromStringAndSize가 나를 위해 속임수를 사용했습니다 :) – Vigo