0

C++ プログラムに埋め込まれた小さな Python スクリプトがあります。Python オブジェクトを 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; 



}

しかし、出力は割り当てられた値と同じではありません。誰が何が間違っているのか説明できますか?

前もって感謝します。

4

1 に答える 1

0

PyString_FromString通常の C 文字列と同様に、渡された文字列が null バイトで終了していると想定します。構造体のどこかに null バイトが含まれている可能性があります。PyString_FromStringAndSizeその仮定を持たない代わりに使用してください。

于 2013-05-02T06:04:07.870 に答える