"; ожидается" ошибка OpenGL в Assimp от Visual Studio при создании экземпляра Assimp :: Importer - PullRequest
0 голосов
/ 13 октября 2019

Я использую Visual Studio для загрузки 3D-модели с помощью opengl и Assimp, поэтому я импортировал Assimp в свой проект без каких-либо проблем. Я хочу создать класс под названием «Модель», который может загружать 3D-модель из файла (я следую учебному пособию на веб-сайте learnopengl.com), но Visual Studio 2019 говорит «ожидается» в какой-то момент:

#pragma once
#include "Shader.h";
#include "Mesh.h";

#include <Importer.hpp>
#include <scene.h>
#include <postprocess.h>

class Model
{
public:
    /*  Functions   */
    Model(char* path)
    {
        loadModel(path);
    }
    void Draw(Shader shader);
private:
    /*  Model Data  */
    vector<Mesh> meshes;
    string directory;
    /*  Functions   */
    void loadModel(string path);
    void processNode(aiNode* node, const aiScene* scene);
    Mesh processMesh(aiMesh* mesh, const aiScene* scene);
    vector<Texture> loadMaterialTextures(aiMaterial* mat, aiTextureType type,
        string typeName);
};


void Model::loadModel(string path)
{
    Assimp::Importer imp; // "; expected"

    int a; //works fine 
    Shader shader("test", "test"); //works fine

}

Посмотрите на функцию «загрузить модель», Visual Studio говорит «ожидается», а переменная imp выделена красным. Я следую этому уроку: https://learnopengl.com/Model-Loading/Model

Обновление:

#pragma once

#include <Importer.hpp>
class test
{
    void f();
};

void test::f()
{
    Assimp::Importer imp();// "; expected"
}

Та же ошибка здесь

ОБНОВЛЕНИЕ 2: Теперь это работает, но я не понимаю, почему у меня былопапка include, в которой находятся все мои файлы включения assimp, и мой проект Visual Studio add связал все файлы include, связав мою папку с именем include. Поэтому я связывал $ (SolutionDir / ExternalLibs / assimp / include)

Но по какой-то причине, после нескольких часов попыток выяснить проблему, я запаниковал и создал файл с именем "assimp" внутри моей папки include,затем я помещаю все мои файлы включения из библиотеки assimp в мою новую папку. Таким образом, мой путь к моим включаемым файлам теперь «ExternalLibs / assimp / include / assimp»

И теперь это работает, я не знаю почему. Я включаю вот так:

#include <assimp/Importer.hpp>
#include <assimp/scene.h>
#include <assimp/postprocess.h>

Вместо этого:

#include <Importer.hpp>
#include <scene.h>
#include <postprocess.h>

Я не знаю, почему это работает, потому что, во-первых, каждый учебник, который я видел, не делает этого, И до тогоВо всяком случае, я мог бы создать другой объект, специфичный для этой библиотеки (aiNode, aiMesh, aiScene, как вы можете видеть в моем коде) без каких-либо проблем. Даже внутри функции, как для Assimp :: Importer.

Так что теперь у меня нет ошибки "; ожидается". Я думаю, это ошибка, и я не знаю, исходит ли она из библиотеки или визуальной студии

...