Je compile l'application wxWidgets avec DialogBlocks sur Windows 7 avec VS2005 installé. La construction est réussie, mais l'exécutable ne s'exécute pas donnant le message: "Le programme ne peut pas démarrer parce que MSVCR80D.dll est absent de votre ordinateur". Le même code créé dans Visual Studio est OK. Construire journal:DialogBlocks sur Windows: MSVCR80D.dll est manquant
----------------------- 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
fichier Manifest:
<?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>
Puis-je changer quelques drapeaux compilateur/éditeur de liens, ou faire un changement sur mon ordinateur, pour permettre cet exécutable de fonctionner?
Essayé cela, maintenant j'ai beaucoup de messages de l'éditeur de liens comme: MSVCRTD.lib (MSVCR80D.dll): erreur LNK2005: _free déjà défini dans LIBCMTD.lib (dbgheap.obj) Avez-vous une idée comment corriger cela? –
La liaison statique à CRT n'est pas très agréable, mais dans tous les cas ma construction principale est dans Visual Studio. Je veux juste que la construction de DialogBlocks fonctionne aussi, donc c'est OK de construire statiquement, si ça marche. –
@Alex Mon mal, maintenant il est clair que wxWidgets est le cas car il a été construit avec '/ MDd' aussi. Donc, mon deuxième point est vrai. Si vous êtes capable de construire des wxWidgets à partir de sources, faites-le. Si ce n'est pas le cas, avez-vous * des * wxWidgets déboguer des bibliothèques autres que celles que vous utilisez? – Keynslug