我在QTCreator的QT项目中包含GLM头文件,但我不断收到编码错误。所有文件似乎都设置为UTF-8,并且它们在屏幕上正常显示。我收到以下几条消息:
C:\Users\Luís Longo\OneDrive\Dyno3D\linking\glm\detail\type_mat2x3.inl:-1: In member function 'glm::mat<2, 3, T, Q>::col_type& glm::mat<2, 3, T, Q>::operator[](glm::mat<2, 3, T, Q>::length_type)':
C:\Users\Luís Longo\OneDrive\Dyno3D\linking\glm\detail\type_mat2x3.inl:222: error: converting to execution character set: Illegal byte sequence
assert(i < this->length());
^
。pro文件
QT += core gui opengl
LIBS += -lopengl32
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
CONFIG += c++11
INCLUDEPATH += $$PWD/linking/glm
DEFINES += QT_DEPRECATED_WARNINGS
SOURCES += \
GLPanel.cpp \
main.cpp \
mainwindow.cpp
HEADERS += \
GLPanel.h \
mainwindow.h
FORMS += \
mainwindow.ui
# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target
DISTFILES += \
fragment.glsl \
vertex.glsl
OpenGL Widget类
#ifndef GLPANEL_H
#define GLPANEL_H
#include <QWidget>
#include <QOpenGLWidget>
#include "glm.hpp"
class GLPanel : public QOpenGLWidget
{
public:
GLPanel(QWidget* parent);
protected:
void initializeGL() override;
void resizeGL(int w, int h) override;
void paintGL() override;
private:
void InitializeOpenGLOptions();
};
#endif // GLPANEL_H```
似乎问题出在文件路径中,该文件路径带有“í”字符。更改项目文件夹已解决了问题。