首页 文章

Windows上的DialogBlocks:缺少MSVCR80D.dll

提问于
浏览
0

我在安装了VS2005的Windows 7上使用DialogBlocks构建wxWidgets应用程序 . 构建成功,但可执行文件没有运行给出消息:“程序无法启动,因为您的计算机缺少MSVCR80D.dll” . 在Visual Studio中构建的相同代码是可以的 . 构建日志:

----------------------- Configuration: VC++ Debug -----------------------
In directory: C:\Users\alexm\Documents\DialogBlocks Projects\Test1
nmake /nologo -f makefile.vc CONFIG=debug clean all
    if exist VCDebug\*.obj del VCDebug\*.obj
    if exist VCDebug\*.res del VCDebug\*.res
    if exist VCDebug\Test11.exe del VCDebug\Test11.exe
    if exist VCDebug\Test11.ilk del VCDebug\Test11.ilk
    if exist VCDebug\Test11.pdb del VCDebug\Test11.pdb
    cl.exe /c /nologo /TP /FoVCDebug\mainframe.obj /DNOPCH /DWIN32 /D__WXMSW__ /D_WINDOWS /D__WXDEBUG__ /D_DEBUG /Zi /MDd /Od /GR /EHsc /W4 /I"C:\wxWidgets-2.8.10/include" /I"C:\wxWidgets-2.8.10/contrib/include" /I"C:\wxWidgets-2.8.10/lib/vc_lib/mswd" /I"C:\Program Files (x86)\Microsoft Visual Studio 8\vc\include" /I"C:\Program Files (x86)\Microsoft Visual Studio 8\vc\PlatformSDK\include" mainframe.cpp
mainframe.cpp
    cl.exe /c /nologo /TP /FoVCDebug\test11app.obj /DNOPCH /DWIN32 /D__WXMSW__ /D_WINDOWS /D__WXDEBUG__ /D_DEBUG /Zi /MDd /Od /GR /EHsc /W4 /I"C:\wxWidgets-2.8.10/include" /I"C:\wxWidgets-2.8.10/contrib/include" /I"C:\wxWidgets-2.8.10/lib/vc_lib/mswd" /I"C:\Program Files (x86)\Microsoft Visual Studio 8\vc\include" /I"C:\Program Files (x86)\Microsoft Visual Studio 8\vc\PlatformSDK\include" test11app.cpp
test11app.cpp
    rc.exe /foVCDebug\Test11.res /DNOPCH /DWIN32 /D__WXMSW__ /D_WINDOWS /D__WXDEBUG__ /D_DEBUG /I "C:\wxWidgets-2.8.10/include" /I "C:\wxWidgets-2.8.10/contrib/include" /I "C:\wxWidgets-2.8.10/lib/vc_lib/mswd" /I "C:\Program Files (x86)\Microsoft Visual Studio 8\vc\include" /I "C:\Program Files (x86)\Microsoft Visual Studio 8\vc\PlatformSDK\include" Test11.rc
link.exe /OUT:VCDebug\Test11.exe /LIBPATH:"C:\wxWidgets-2.8.10/lib/vc_lib" /LIBPATH:"C:\Program Files (x86)\Microsoft Visual Studio 8\vc\lib" /LIBPATH:"C:\Program Files (x86)\Microsoft Visual Studio 8\vc\PlatformSDK\lib" /nologo /SUBSYSTEM:WINDOWS /machine:i386 /DEBUG VCDebug\mainframe.obj VCDebug\test11app.obj VCDebug\Test11.res wxmsw28d_richtext.lib wxmsw28d_aui.lib wxmsw28d_html.lib wxmsw28d_xrc.lib wxmsw28d_core.lib wxbase28d.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexd.lib wxmsw28d_adv.lib wxmsw28d_html.lib wxmsw28d_xrc.lib wxbase28d_net.lib wxbase28d_xml.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib
    link.exe /OUT:VCDebug\Test11.exe /LIBPATH:"C:\wxWidgets-2.8.10/lib/vc_lib" /LIBPATH:"C:\Program Files (x86)\Microsoft Visual Studio 8\vc\lib" /LIBPATH:"C:\Program Files (x86)\Microsoft Visual Studio 8\vc\PlatformSDK\lib" /nologo /SUBSYSTEM:WINDOWS /machine:i386 /DEBUG @C:\Users\alexm\AppData\Local\Temp\nmB05C.tmp
Done.

0 errors, 0 warnings

清单文件:

<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity type='win32' name='Microsoft.VC80.DebugCRT' version='8.0.50727.762' processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b' />
    </dependentAssembly>
  </dependency>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity type='win32'              name='Microsoft.Windows.Common-Controls'        version='6.0.0.0'                               processorArchitecture='x86'                   publicKeyToken='6595b64144ccf1df'               language='*' />
    </dependentAssembly>
  </dependency>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity type='win32' name='Microsoft.VC80.CRT' version='8.0.50727.762' processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b' />
    </dependentAssembly>
  </dependency>
</assembly>

我可以更改一些编译器/链接器标志,或在我的计算机上进行一些更改,以允许此可执行文件运行吗?

1 回答

  • 0

    情况是编译器 cl.exe 已经提供了 /MDd 标志,告诉他链接共享库版本 . 请尝试使用 /MTd .


    由于wxWidgets库是使用共享运行时构建的,因此可能会出现此问题 . 通常,您不允许使用不同版本的vc运行时构建项目 . 在这种情况下,您可以探索wxWidgets是否提供使用静态运行时构建的库 . 他们常常这样做 .


    只是要清楚 . 如果编译涉及不同版本的vc运行时,则不允许将二进制文件与库和对象文件链接 . 在我的机器上我有MSVS 2005,但我的CRT调试运行时版本略有不同 .

    <assemblyIdentity type="win32" name="Microsoft.VC80.DebugCRT" version="8.0.50608.0" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b" />

    一个可能的原因是,另一方面,您的库作者已经安装了MSVS 2005 SP1 .

    HTH .

相关问题