几天来我一直在尝试使用 Visual Studio 2013 构建 Qt 的静态版本。
我就是不明白我做错了什么。
System:
- Windows 7 64 位
- Visual Studio 2013(仍安装 Visual Studio 2012)
- Perl 已安装 (ActivePerl-5.18.2.1801-MSWin32-x64-297964.msi)
- Python 已安装 (python-2.7.6.amd64.msi)
- Direct X 10 SDK已安装(DXSDK_Jun10.exe我必须使用这个解决方法 http://support.microsoft.com/kb/2728613)
- 已下载Qt 5.2.1 http://download.qt-project.org/official_releases/qt/5.2/5.2.1/single/qt-everywhere-opensource-src-5.2.1.zip
- 已下载Qt 5.3.0 阿尔法 http://download.qt-project.org/development_releases/qt/5.3/5.3.0-alpha/single/qt-everywhere-opensource-src-5.3.0-alpha.zip
我多次做了什么:
- 将源文件提取到临时文件夹 (C:\QtSrc)
- 删除 qtwebkit 和 qtwebkit-examples 目录
对于每个文件夹,我启动了 Visual Studio x86 命令行并运行:
- cd C:\QtSrc
- 配置-c ++ 11 -mp -调试和发布-静态-角度-nomake测试-nomake示例-前缀C:\ Qt \ 5.2.1 \ msvc2013 -platform win32-msvc2013
- nmake
- nmake安装
对于我尝试过的 -static 与 -shared 或 Qt 5.2.1 与 Qt 5.3.0 alpha 的每个变体来说,这总是成功的。
在 Qt 创建者中
我可以使用共享 Qt 库注册各种套件、编译和启动任何示例。另一方面,使用静态 Qt 库的示例从未编译。
错误总是这样的:LNK1104:无法打开文件“C:/Qt/5.3.0/msvc2013-static/lib/translator_common.lib”。
问题是文件丢失(调试模式下的translator_commond.lib或发布模式下的translator_common.lib)
在 Visual Studio 2013 中(使用 Visual Studio Addin 1.2.3 alpha)
我可以添加 Qt 版本并更改解决方案的 Qt 版本。
如果可以使用 Qt 的共享版本编译并运行一个非常简单的程序,如下所示:
#include <QtCore>
#include <QtGui>
#include <QtWidgets>
Q_IMPORT_PLUGIN(QWindowsIntegrationPlugin);
int main(int argc,char*argv[]){
QApplication app(argc,argv);
QMessageBox::critical(nullptr,"Hello","Hello Qt!");
return 0;}
使用静态版本的 Qt 时,出现未解决的外部链接器错误:
1>libGLESv2d.lib(Shader.obj) : error LNK2019: unresolved external symbol _ShInitialize referenced in function "private: void __thiscall gl::Shader::initializeCompiler(void)" (?initializeCompiler@Shader@gl@@AAEXXZ)
1>libGLESv2d.lib(Shader.obj) : error LNK2019: unresolved external symbol _ShFinalize referenced in function "public: static void __cdecl gl::Shader::releaseCompiler(void)" (?releaseCompiler@Shader@gl@@SAXXZ)
1>libGLESv2d.lib(Shader.obj) : error LNK2019: unresolved external symbol _ShInitBuiltInResources referenced in function "private: void __thiscall gl::Shader::initializeCompiler(void)" (?initializeCompiler@Shader@gl@@AAEXXZ)
1>libGLESv2d.lib(Shader.obj) : error LNK2019: unresolved external symbol _ShConstructCompiler referenced in function "private: void __thiscall gl::Shader::initializeCompiler(void)" (?initializeCompiler@Shader@gl@@AAEXXZ)
1>libGLESv2d.lib(Shader.obj) : error LNK2019: unresolved external symbol _ShDestruct referenced in function "public: static void __cdecl gl::Shader::releaseCompiler(void)" (?releaseCompiler@Shader@gl@@SAXXZ)
1>libGLESv2d.lib(Shader.obj) : error LNK2019: unresolved external symbol _ShCompile referenced in function "protected: void __thiscall gl::Shader::compileToHLSL(void *)" (?compileToHLSL@Shader@gl@@IAEXPAX@Z)
1>libGLESv2d.lib(Shader.obj) : error LNK2019: unresolved external symbol _ShGetInfo referenced in function "protected: void __thiscall gl::Shader::compileToHLSL(void *)" (?compileToHLSL@Shader@gl@@IAEXPAX@Z)
1>libGLESv2d.lib(Shader.obj) : error LNK2019: unresolved external symbol _ShGetInfoLog referenced in function "protected: void __thiscall gl::Shader::compileToHLSL(void *)" (?compileToHLSL@Shader@gl@@IAEXPAX@Z)
1>libGLESv2d.lib(Shader.obj) : error LNK2019: unresolved external symbol _ShGetObjectCode referenced in function "protected: void __thiscall gl::Shader::compileToHLSL(void *)" (?compileToHLSL@Shader@gl@@IAEXPAX@Z)
1>libGLESv2d.lib(Shader.obj) : error LNK2019: unresolved external symbol _ShGetInfoPointer referenced in function "protected: void __thiscall gl::Shader::compileToHLSL(void *)" (?compileToHLSL@Shader@gl@@IAEXPAX@Z)
尽管我付出了一切努力,我还是无法找到包含哪个库来解决这些丢失的符号。
你知道我做错了什么吗?