尝试编译 Assimp 时无法解析的外部符号 _aiGetMaterialTextureCount

问题描述 投票:0回答:2

我尝试在我的 C++ 游戏引擎中使用 Assimp,但无法链接。我知道“无法解析的外部符号”意味着链接器无法找到函数,但我知道我已经正确设置了项目设置。我从源代码(v 5.0.1)编译了最新版本的 Assimp 并链接到 assimp-vc142-mtd.lib、IrrXMLd.lib 和 zlibd.lib(尽管我认为我只需要链接到第一个)。尽管如此,我仍然收到此错误。我还尝试在发布模式下编译 Assimp 并链接到 assimp-vc142-mt.lib 但仍然收到错误。

Here is a screenshot of the errors

另外,我知道这个错误只有在我实际使用 Assimp 编写代码时才会出现,例如:

Assimp::Importer importer;
const aiScene* scene = importer.ReadFile(filename, aiProcess_Triangulate
    | aiProcess_FlipUVs | aiProcess_GenSmoothNormals | aiProcess_JoinIdenticalVertices);

aiMaterial* material = scene->mMaterials[i];
    textureList[i] = nullptr;

    if (material->GetTextureCount(aiTextureType_DIFFUSE))
    {
        aiString path;
        if (material->GetTexture(aiTextureType_DIFFUSE, 0, &path) == aiReturn_SUCCESS)
        {
            // do stuff...
        }
    }

如果我删除上面的代码,那么我就不再收到任何错误,但这没有帮助,因为那样我就无法实际使用该库。我做错了什么?

c++ linker-errors assimp
2个回答
0
投票

您需要告诉链接器链接assimp dll。希望这有帮助。


0
投票

我之前其实也遇到过同样的问题,错误的原因是:我的Cmake默认在x64平台上创建了解决方案,而我的项目运行在x86(Win32)平台上。

您应该检查项目的目标平台,或者您应该将平台切换到 Cmake 创建解决方案的平台。

我希望信息可以有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.