【问题标题】:Can't Install MSVCP100.dll无法安装 MSVCP100.dll
【发布时间】:2012-05-20 19:53:29
【问题描述】:

我正在使用 CMake 在 Windows 上使用 Visual Studio 2010 Express 构建我的基于 Qt 的应用程序。使用 cmake 配置时出现以下错误:

System runtime library file does not exists:
'MSVC10_REDIST_DIR-NOTFOUND/x86/Microsoft.VC100.CRT/msvcp100.dll

System runtime library file does not exists:
'MSVC10_REDIST_DIR-NOTFOUND/x86/Microsoft.VC100.CRT/msvcr100.dll

然后当我尝试编译时,我收到了这个错误(在 Visual Studio 和 msbuild 中都尝试过):

MSVCRT.lib(crtexew.obj) : error LNK2019: unresolved external symbol _WinMain@16 referenced in function ___tmainCRTStartup
C:\Users\Kurtis\sandbox\UDJ-Desktop-Client\build\src\Release\UDJ.exe : fatal error LNK1120: 1 unresolved externals

我确定 Microsoft Visual C++ 2010 Express 不附带 redistributable that I need。所以我去微软的网站下载了可再发行文件(x86x64)。但是,安装后,我仍然收到上述配置和编译错误。有谁知道我做错了什么,或者如何解决我的问题?

【问题讨论】:

    标签: visual-studio-2010 qt visual-c++ cmake


    【解决方案1】:

    _WinMain@16 是 Windows GUI 应用程序的入口点,因此您的源代码中缺少它,或者您没有编写 GUI 应用程序,在这种情况下您的链接器标志不正确。

    由于您使用的是 qt,请确保您已将 QtMain 库与您的项目链接。您可以通过将其添加到对 Find_Package 的调用中来执行此操作,如下所示:

    find_package(Qt4 4.7.0 COMPONENTS QtMain QtCore QtGui QtSQL Phonon REQUIRED)
    

    【讨论】:

    • 嗯,我确实在编写一个 GUI 应用程序(因此是 Qt),所以我想我的源代码中缺少 _WinMain@16。虽然我真的不知道我会把它放在哪里,或者这是否应该由 CMake 为我处理......
    • 啊,果然,我忘了包含 QtMain,它是主要功能的跨平台 qt 包装器。感谢您的帮助!
    • @KurtisNusbaum 我不确定它是跨平台的吗?我以为它只存在于 Windows 上。
    • 是的,它是跨平台的。 QtMain 在非 Windows 平台上只是一个空变量。
    猜你喜欢
    • 2014-02-12
    • 1970-01-01
    • 1970-01-01
    • 2018-12-26
    • 1970-01-01
    • 2018-03-02
    • 2011-08-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多