كيف يمكنك أن الأمراض المنقولة جنسيا :: ناقلات في كسكودي + C ++؟ [مغلق]

StackOverflow https://stackoverflow.com/questions/1611526

سؤال

لأسباب مختلفة (وأنا أؤكد لكم أنها صحيحة، لذلك أي حديث "استخدام الكاكاو" من فضلك)، ويجب أن تعمل مع كسكودي، C ++، برنامج OpenGL، OpenCL (مع القليل من تخمة في الجانب) لإعادة بناء بعض الرسومات العروض على ماك (قادمة من XP + تطوير Visual ستوديو 2005). تم بناء المشروع باعتباره أداة سطر الأوامر باستخدام "ج ++ stdc ++".

وملف Program.h بلدي يربط بلدي تظليل الكائنات معا، يجمع، وصلات، وغير ذلك يعدهم لاستخدامها في برامج تظليل برنامج OpenGL. الواردة في هذا الملف هي خطوط ذات الصلة التعليمات البرمجية التالية:

#include <vector>
using std::vector;

وضمن القسم الخاص من فئة:

vector<int> shaderHandles;

وعند إضافة تظليل يعالج:

shaderHandles.push_back(shaderHandle);

وأخيرا، عند استخدام تظليل دفع مقابض:

for (int s = 0; s < (int) shaderHandles.size(); s++)
{
    glAttachShader(handle, shaderHandles[s]);
}

في كل ما عندي من الخبرة والبحث، لا يوجد شيء خاطئ مع هذه الخطوط ضمن C ++. ومع ذلك، عندما جمع (سواء التصحيح أو الإفراج عنهم، حتى انها لا تتعلق المشكلة _GLIBCXX_DEBUG)، يتم إنشاء الأخطاء 4 التالية:

/Developer/SDKs/MacOSX10.6.sdk/usr/include/c++/4.2.1/bits/stl_bvector.h:916: error: 'size' is not a member of 'std'
/Developer/SDKs/MacOSX10.6.sdk/usr/include/c++/4.2.1/bits/stl_bvector.h:961: error: 'size' is not a member of 'std'
/Developer/SDKs/MacOSX10.6.sdk/usr/include/c++/4.2.1/bits/vector.tcc:350: error: '__old_size' is not a member of 'std'
/Developer/SDKs/MacOSX10.6.sdk/usr/include/c++/4.2.1/bits/vector.tcc:453: error: '__old_size' is not a member of 'std'

وأيضا، الملف الذي يربط stl_bvector.h وvector.tcc هو:

/Developer/SDKs/MacOSX10.6.sdk/usr/include/c++/4.2.1/vector

وحتى الآن، تحولت العديد من عمليات البحث في Google عن شيء. كل هذا الرمز يعمل لا تشوبه شائبة على ويندوز. والأسوأ من ذلك، إذا كنت استبدال رمز أعلاه مع قائمة المعادل:

#include <list>
using std::list;

و

list<int> shaderHandles;

و

for (list<int>::iterator s = shaderHandles.begin(); s != shaderHandles.end(); s++)
{
    glAttachShader(handle, *s);
}

وهذا البرنامج يعمل كما هو متوقع.

ولكن لا يمكن إلقاء اللوم على هذا كليا على تنفيذ ناقلات، لأن البرنامج التالي:

#include <iostream>
#include <vector>
using std::vector;

int main (int argc, char * const argv[])
{
    vector<int> test;

    test.push_back(1);
    test.push_back(2);
    test.push_back(3);

    test.clear();
    return 0;
}

ويعمل مع أية مشاكل.

وسأكون سعيدا لتقديم مزيد من المعلومات عند الضرورة.

ومن فضلك لا تقل لي أنني يجب أن استخدام الكاكاو / الهدف-C. انها ليست حقا خيارا في الوقت الراهن. وعلى الرغم من نعم، يمكنني استخدام القوائم لتحقيق هذه الوظيفة، وأجزاء أخرى من بلدي تجريبي ليست سهلة جدا لإعادة صياغة.

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

المحلول

وأنا آسف الجميع SO. بعد دقائق مجرد نشر هذا، قررت أن أذهب على مع ما يمكن أن أقوله، وتوفير هذه المسألة في وقت لاحق. لقد وجدت مشكلة مماثلة تحدث مع fstream. مع هذه المعلومات الجديدة المتاحة، جلبت جوجل للبحث عن هذا الموضوع ، وفي نهاية المطاف الحل .

وكنت قد تعرف لي مين الخاصة ووحدات كحد أقصى في بلدي ناقل الملفات الرياضيات لا علاقة لها تماما. وكان الحل لإزالة وحدات الماكرو وضعت الأمراض المنقولة جنسيا :: أمام دقيقة ويدعو كحد أقصى.

نصائح أخرى

هل قمت بفحص وثائق ماك SDK، ما هي الوظائف القيام يعلنون للفئة ناقلات الأمراض؟ ربما كنت قد وضعت بعض الأعلام المترجم؟ أيضا يمكنك أن تفعل الشيء نفسه بالنسبة للناقلات كما فعلت للقائمة، وذلك باستخدام التكرارات لمسح من خلال ناقلات الخاص بك.

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