私は奇妙な問題に悩まされています。gyp プロジェクトを使用して作成された exe があり、common.gypi は 32 ビットと 64 ビットの両方の Linux 用の exe をビルドするためにサポートされています。ただし、64 ビット Linux 用にビルドし、コード内のある時点で memcpy を呼び出すと、コンテンツがゼロになります。-m32 フラグを使用して 32 ビット プラットフォーム用にビルドしても、この問題は発生しません。プロジェクトのヘッダー ファイルは 32 ビットと 64 ビットの両方のプラットフォームで共通であるため、ヘッダーに問題があるとは思えません。誰かがこの問題に取り組む方法をいくつか教えてもらえますか? バイナリは動的にリンクされ、GLIBC lgcc、lc、および lm を使用します。この分野のポインタは大歓迎です。必要な追加情報がありましたら、喜んで提供させていただきます。ありがとう。
更新: コード スニペットのビット: これは、コードの基本的なスニペットです。
dst->flags = src->flags;
src->b = dst->b;
and few more assignments
memcpy(dst, src, size here is 152);
size of dst is 224 and size of src is 496.
問題は、最初に dst にコピーされたフラグの値が、memcpy が呼び出された後にゼロになることです。32ビット用に構築された場合、同じロジックがうまく機能します。