我只是尝试使用NDK编译一个简单的类(适用于GCC编译):
ShaderProgramManager.h:
namespace Graphics {
class ShaderProgramManager {
public:
ShaderProgramManager();
virtual ~ShaderProgramManager();
static Graphics::ZGLProgram* ColoredVertexProgram;
};
} /* namespace Graphics */
ShaderProgramManager.cpp:
#include "ShaderProgramManager.h"
namespace Graphics {
ShaderProgramManager::ShaderProgramManager() {
ShaderProgramManager::ColoredVertexProgram=new ZGLProgram();
}
错误是:
undefined reference to 'Graphics::ShaderProgramManager::ColoredVertexProgram'
如果我声明变量非静态,则没有问题。
答案 0 :(得分:0)
确定。要正确定义静态变量,必须在编译单元和外部方法中重新声明它们。
在这种情况下正确的ShaderProgramManager.cpp:
#include "ShaderProgramManager.h"
namespace Graphics {
Graphics::ZGLProgram* ShaderProgramManager::ColoredVertexProgram;
ShaderProgramManager::ShaderProgramManager() {
ColoredVertexProgram=new ZGLProgram();
}