【发布时间】:2016-03-29 22:01:05
【问题描述】:
我使用QT5 和Visual Studio 2013 创建了应用程序。我还在我的应用程序中使用了QT WebEngine。
我的应用程序在 Windows 7(32 位)中运行良好。出于某种原因,我需要在 windows xp sp3(32 位)中运行它。
当我运行它时,我收到以下错误:
The procedure entry point strnlen could not be located in the dynamic link library msvcrt.dll
我按OK 几次,它消失了,我的QMainWindow 会弹出,但它完全是黑色的,我在调试器中看到以下错误。
class QWindowsEGLStaticContext *__cdecl QWindowsEGLStaticContext::create(class QFlags<enum QWindowsOpenGLTester::Renderer>): Could not initialize EGL display: error 0x3001
class QWindowsEGLStaticContext *__cdecl QWindowsEGLStaticContext::create(class QFlags<enum QWindowsOpenGLTester::Renderer>): When using ANGLE, check if d3dcompiler_4x.dll is available
d3dcompiler_47.dll 也在应用程序目录中。
这里有什么问题吗?
更新 1
我将 3dcompiler_46.dll 放在可执行文件的目录中,结果就是这样。
我仍然收到The procedure entry point strnlen could not be located in the dynamic link library msvcrt.dll 错误,但在我按Ok 后,我也收到以下错误。
The procedure entry point _except_handler4_common could not be located in the dynamic link library msvcrt.dll
QMainWindow 仍然是BLACK,关于ANGLE 的错误是一样的。
更新 2
我使用以下配置为Windows XP 构建QT
configure -release -opensource -opengl desktop -target xp -platform win32-msvc2013 -angle -icu -nomake examples -prefix C:\QT-Compile
我替换了QT 依赖并运行了我的应用程序,我得到了以下错误:
The application has failed to start because icuin56.dll was not found
The application has failed to start because icuuc56.dll was not found
我试图在 QT 目录 (C:\QT-Compile) 中找到它们,但我无法将它们放在运行在 Windows Seven 中的主机上,我将它们放在可执行文件旁边,并且应用程序成功运行并且以前的错误消失了,但是,QMainWindow 仍然是BLACK,并且我的调试器在运行时出现以下错误。
QOpenGLShaderProgram: could not create shader program
QOpenGLShader: could not create shader
bool __thiscall QOpenGLTextureBlitter::create(void) Could not link shader program:
现在怎么了?
更新 3
这就是我配置QT的方式。
configure -release -opensource -opengl dynamic -target xp -platform win32-msvc2013 -icu -nomake examples -prefix C:\QT-Compile
我使用了windeployqt.exe 并将所需的 DLL 和 ... 放在可执行文件旁边。
在 windows xp 中运行应用程序,我不断收到以下错误,然后应用程序崩溃。
消息框:
The procedure entry point strnlen could not be located in the dynamic link library msvcrt.dll
QT 调试器:
class QWindowsEGLStaticContext *__cdecl QWindowsEGLStaticContext::create(class QFlags<enum QWindowsOpenGLTester::Renderer>): Could not initialize EGL display: error 0x3001
class QWindowsEGLStaticContext *__cdecl QWindowsEGLStaticContext::create(class QFlags<enum QWindowsOpenGLTester::Renderer>): When using ANGLE, check if d3dcompiler_4x.dll is available
Failed to load opengl32sw.dll (The specified module could not be found.)
class QOpenGLStaticContext *__cdecl QOpenGLStaticContext::create(bool): Failed to load and resolve WGL/OpenGL functions
【问题讨论】:
标签: qt visual-studio-2013 angle msvcrt windows-xp-sp3