سؤال

القيام بتطوير المنصة عبر 64 بت. باستخدام GCC / Linux و MSVC9 / Server 2008. فقط نشرت مؤخرا عميلا على Windows وخلال بعض الاختبارات التي اكتشفت أنه على الرغم من أن STD :: Streamoff هو 8 بايت، تعطل البرنامج عند البحث عن 4G الماضي.

لقد تحولت على الفور إلى Stlport التي إصلاح المشكلة، ومع ذلك يبدو أن Stlport لديه مشاكل أخرى. هو STL مع MSVC9 حقا كسر هذا، أو أنا أفتقد شيئا؟

نظرا لأن الرمز هو عبور منصة لدي فائدة صفر باستخدام أي مكالمات Win32.

متعلق ب

هل كانت مفيدة؟

المحلول 3

انتهى بي الأمر باستخدام stlport. أكبر اختلاف في Stlport يجري أن بعض اختبارات الوحدة التي تحطمت أثناء تزايد الأرقام الدقيقة المزدوجة تعمل الآن وتمرير اختبارات الوحدة هذه. هناك بعض الاختلافات الأخرى مع الدقة النسبي ظهرت ولكن تلك تبدو طفيفة.

نصائح أخرى

على الرغم من أنك تقول إن لديك فائدة "صفر" في استخدام مكالمات "Win32"، فإنها مواقف مثل هذا عالقا بين الصخور والمكان الصعب.

أود فقط أن أفرج عن نسختي الخاصة من ملف iOStream باستخدام مكالمات "Win32" التي تبدو ويشعر وكأنها واجهات Frestream. هذا سهل القيام به وقد فعلت ذلك مئات المرات.

نسميها يقول "fstreamwin32".

ثم سيكون لدي ملف رأس من شأنه أن يفعل شيئا مثل:

#ifdef WIN32
typedef fstreamwin32 fsteamnative;
#else
typedef fstream fsteamnative;
#endif

ثم أود استخدام fSteamnative في كل مكان. بهذه الطريقة تحتفظ برمزك عبر النظام الأساسي وما زالت حل مشكلتك.

إذا تم إصلاح المشكلة من أي وقت مضى، فيمكنك بسهولة إزالة الحل البديل الخاص بك "Win32" عن طريق تغيير Typedef مرة أخرى لاستخدام FrStream Typedef. هذا هو السبب في أن الكثير من Braybases Cross من النظام الأساسي لديها الكثير من مستويات غيرها (على سبيل المثال باستخدام Typedef's الخاصة بهم للحصول على الأشياء القياسية) بحيث تكون الأشياء مثل هذا الأمر من شأنه أن يضطر إلى تغيير الكثير من التعليمات البرمجية.

رابط آخر وجدته في هذا الموضوع:

http://cplusplus.com/forum/general/6813/

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top