Dwi*_*ght 5 c++ xcode vector std stdvector
出于各种原因(我向你保证它们是有效的,所以请不要谈论“使用 Cocoa”),我必须使用 XCode、C++、OpenGL、OpenCL(旁边有一点 GLUT)在 Mac 上重建一些图形演示(来自 XP + Visual Studio 2005 开发)。该项目是使用“c++ stdc++”作为命令行工具构建的。
我的 Program.h 文件将我的着色器对象连接在一起、编译、链接并以其他方式准备它们以用作 OpenGL 着色器程序。此文件中包含以下相关代码行:
#include <vector>
using std::vector;
Run Code Online (Sandbox Code Playgroud)
并在班级的私人部分中:
vector<int> shaderHandles;
Run Code Online (Sandbox Code Playgroud)
添加着色器句柄时:
shaderHandles.push_back(shaderHandle);
Run Code Online (Sandbox Code Playgroud)
最后,当使用推送的着色器句柄时:
for (int s = 0; s < (int) shaderHandles.size(); s++)
{
glAttachShader(handle, shaderHandles[s]);
}
Run Code Online (Sandbox Code Playgroud)
根据我的所有经验和研究,C++ 中的这些行没有任何问题。但是在编译的时候(无论是debug还是release,所以与_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'
Run Code Online (Sandbox Code Playgroud)
此外,链接到 stl_bvector.h 和 vector.tcc 的文件是:
/Developer/SDKs/MacOSX10.6.sdk/usr/include/c++/4.2.1/vector
Run Code Online (Sandbox Code Playgroud)
到目前为止,无数的谷歌搜索一无所获。所有这些代码都可以在 Windows 上完美运行。更糟糕的是,如果我用列表等价物替换上面的代码:
#include <list>
using std::list;
Run Code Online (Sandbox Code Playgroud)
和,
list<int> shaderHandles;
Run Code Online (Sandbox Code Playgroud)
和,
for (list<int>::iterator s = shaderHandles.begin(); s != shaderHandles.end(); s++)
{
glAttachShader(handle, *s);
}
Run Code Online (Sandbox Code Playgroud)
该程序按预期工作。
但是不能将这完全归咎于向量实现,因为以下程序:
#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;
}
Run Code Online (Sandbox Code Playgroud)
工作没有问题。
我很乐意在必要时提供更多信息。
请不要告诉我我应该使用 Cocoa/Objective-C;现在这不是一个真正的选择。虽然是的,我可以使用列表来完成此功能,但我的演示的其他部分并不那么容易返工。
| 归档时间: |
|
| 查看次数: |
16440 次 |
| 最近记录: |