문제

여러 가지 이유로 (그리고 그들이 유효하다고 확신합니다. 그래서 "Cocoa 사용"토크를 제발 부탁드립니다), 나는 Xcode, C ++, OpenGL, OpenCL (옆에 약간의 glut)으로 작업해야합니다. (XP + Visual Studio 2005 개발에서 온다). 이 프로젝트는 "C ++ STDC ++"를 사용하여 명령 줄 도구로 구축되었습니다.

My 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 검색으로 인해 아무것도 나타나지 않았습니다. 이 모든 코드는 Windows에서 완벽하게 작동합니다. 더 나쁜 것은 위의 코드를 목록에 해당하는 경우 다음과 같습니다.

#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;
}

문제없이 작동합니다.

필요에 따라 더 많은 정보를 제공 해 드리겠습니다.

Cocoa/Objective-C를 사용해야한다고 말하지 마십시오. 지금은 실제로 옵션이 아닙니다. 그렇습니다. 목록을 사용 하여이 기능을 달성 할 수 있지만 데모의 다른 부분은 재 작업하기가 쉽지 않습니다.

도움이 되었습니까?

해결책

모두 미안 해요. 이 글을 게시 한 지 몇 분 만에, 나는 내가 할 수있는 일을 계속하기로 결정하여 나중에이 문제를 저장했습니다. FSTREAM과 비슷한 문제가 발생했습니다. 이 새로운 정보를 사용할 수 있으면 Google 검색이 제기되었습니다. 이 주제, 그리고 궁극적으로 해결책.

나는 완전히 관련이없는 벡터 수학 파일에서 내 자신의 Min과 Max Macros를 정의했습니다. 해결책은 내 매크로를 제거하고 std ::를 최소 및 최대 통화 앞에 두는 것이 었습니다.

다른 팁

Mac SDK 문서를 확인 했습니까? 벡터 클래스에 대해 어떤 기능을 선언합니까? 컴파일러 플래그를 설정했을까요? 또한 목록과 마찬가지로 반복자를 사용하여 벡터를 통해 스캔하여 벡터에 대해 동일한 작업을 수행 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top