我编写了一个能够显示纹理模型的小 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 依赖项?在这种情况面前,我真的很迷茫。有人可以帮助我吗?非常感谢您的帮助。