编译c ++项目/ Open GL时出现纹理错误
Posted
技术标签:
【中文标题】编译c ++项目/ Open GL时出现纹理错误【英文标题】:textures error when compiling c + + project / Open GL 【发布时间】:2012-09-24 04:18:02 【问题描述】:我在编译自己制作的程序时遇到问题。
问题是我在 Visual C++ 2010 中使用的是 IDE,当我在 Debug 或 Release 模式下编译时,一切都显示得很好(我正在使用 Open GL 和纹理)。
问题是当我有我的程序的 exe 并尝试运行 OpenGL 窗口是空白的。
测试了很久才发现,如果我没有加载纹理,一切都会正确显示。
现在我的问题(记住路径是相对路径或纹理是正确的)exe 文件无法正确加载,并且从 Visual C++ 2010 编译时纹理是否正确?
不要给出任何错误以了解问题所在。
我尝试了一切.. 路径正确,纹理存在于 exe 应查看的同一目录中。不可能……而且最奇怪的是从visual c++程序(不是exe)可以正常工作。
【问题讨论】:
您的程序可能会静默加载所需的 DLL 失败。当您从 Visual Studio 运行 EXE 时,您的 PATH 中会包含额外的信息,Windows 将在搜索 DLL 时使用这些信息。假设 OpenGL 本身工作正常,我应该问:你的纹理是什么图像格式,你是如何加载它的? 你能在你的项目设置中检查“工作目录”和“调试目录”吗? Paddy 可能是正确的。您可以做的仔细检查是首先尝试将 dll 复制到与您的 exe 相同的目录中。如果这不起作用,请查看如何使用 GlGetError,这对于从 GL 中获取调试信息非常有帮助。 【参考方案1】:从 Visual Studio 启动应用程序时,应用程序执行路径是您的源代码所在的路径(比 .sln 文件更深的文件夹)。 您是否将 exe 从“Release”文件夹复制粘贴到纹理所在的文件夹中?如果没有,请尝试这样做。这就是我通常在发布应用程序之前对其进行测试的方式。 另一个原因可能是您的应用程序中存在错误。它可能是指针覆盖数据、删除释放的内存或写入超出数组范围。所有这些都可能导致应用程序在没有调试器的情况下运行时根本无法工作。原因是调试模式和释放模式之间的内存布局不同。我经常遇到这样的问题。 您的应用程序是多线程的吗?如果是,那也可能是它失败的原因。
【讨论】:
以上是关于编译c ++项目/ Open GL时出现纹理错误的主要内容,如果未能解决你的问题,请参考以下文章
Visual Studio 2010 在编译 C++/CLI 项目时出现奇怪的错误
Typescript:更新 Firebase 函数依赖项时出现编译错误
在 Visual Studio/C++ 中使用 fbx SDK 构建项目时出现编译错误