1

我编写了一个能够显示纹理模型的小 OpenGL Qt 项目。要加载 BMP 文件,我使用 OpenCV 'cvLoadImage' 方法来完成工作。问题出在编译执行结束时。出现以下错误消息:

lnk2019 unresolved external symbol cvLoadImage referenced in function "public: void __cdecl CoreSystem::loadBMPTexture(char const *,enum E_TextureType)" (?loadBMPTexture@CoreSystem@@QEAAXPEBDW4E_TextureType@@@Z)

这是我的方法的内容:

void                    CoreSystem::loadBMPTexture(char const *filename, E_TextureType texType)
{
    IplImage            *image = NULL;

    if ((image = cvLoadImage(filename)) != NULL)
    {
        glGenTextures(1, &this->textureID);
        glBindTexture(GL_TEXTURE_2D, this->textureID);

        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);

        if (texType == MIPMAP)
            gluBuild2DMipmaps(GL_TEXTURE_2D, 3, image->width,
            image->height,GL_BGR_EXT, GL_UNSIGNED_BYTE, image->imageData);
        else
            glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, image->width,
            image->height, 0, GL_BGR, GL_UNSIGNED_BYTE, image->imageData);

        glBindTexture(GL_TEXTURE_2D, 0);
    }
}

但是,我的 OpenCV 库链接在链接器中是正确的(我添加了 opencv_highgui245d.lib),并且我的 VC++ 目录链接也是正确的(如果我在函数“loadBMPTexture”中注释代码,则编译是正确的,所以我的库被识别,所以我的链接是正确的)。我想明确一点,在创建 QT 项目之前,我制作了相同的项目,但没有 QT 上下文(只是一个简单的控制台应用程序)并且程序运行良好(具有相同的链接)。但是对于 QT,它似乎不起作用。QT 是否不链接外部 OpenCV 依赖项?在这种情况面前,我真的很迷茫。有人可以帮助我吗?非常感谢您的帮助。

4

0 回答 0