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