Je travaille sur la relance d'un ancien projet (qui ne fonctionne qu'avec < 5.1) qui compile PHP 5.3 en un PE C++ EXE. J'ai tout à fait travailler vraiment bien sur plusieurs ordinateurs Windows 7 avec seulement 2 dll et 1 exe pour la plupart des applications! Malheureusement, je reçois XP:C++ EXE fait en VC++ 2008 fonctionne sous Windows 7 mais pas XP
l'application n'a pas pu démarrer car la configuration de l'application est incorrecte
J'ai installé Microsoft Visual C++ 2008 Redistributable Package en vain. J'ai également copié msvcm90.dll, msvcr90.dll, msvcp90.dll dans le même répertoire que l'exe. Cela n'a pas fonctionné non plus. Est-ce que je dois juste compiler le projet sur XP pour qu'il fonctionne sur XP?
Je suis vraiment bon en PHP, mais C n'est pas mon fort, donc je suppose qu'il me manque quelque chose d'évident dans le compilateur.
EDIT: Quand je compile avec juste multithread (/ Mt) Je reçois ceci:
MSVCRT.lib(MSVCR90.dll) : error LNK2005: _fflush already defined in
LIBCMT.lib(fflush.obj)
MSVCRT.lib(MSVCR90.dll) : error LNK2005: _malloc already defined in LIBCMT.lib(malloc.obj)
MSVCRT.lib(MSVCR90.dll) : error LNK2005: _free already defined in LIBCMT.lib(free.obj)
LINK : warning LNK4098: defaultlib 'MSVCRT' conflicts with use of other libs; use /NODEFAULTLIB:library
out/console_debug.exe : fatal error LNK1169: one or more multiply defined symbols found
Lors d'une liaison statique au CRT, vous devez le faire dans tous les projets impliqués dans la solution (ou tous les sous-projets impliqués dans un projet). Si vous jetez un oeil à la sortie de l'éditeur de liens, vous pouvez voir qu'il y a des erreurs de lancer que certaines fonctions sont déjà définies. MSVCRT est utilisé lors de la liaison dynamique, LIBCMT lors de la liaison statique. Assurez-vous de spécifier/MT dans tous les projets/sous-projets. Aussi, lors de la construction de toutes vos propres bibliothèques, vous liez (le cas échéant). – Xandy
Eh bien, je crois que je n'ai qu'un seul fichier cpp un fichier de ressources. Une seule solution et un projet. J'utilise d'autres DLL, mais celles-ci sont requises au moment de l'exécution et ne devraient pas provoquer d'erreurs de construction. –
Ensuite, le problème est avec les DLL. Si vous pouvez les recréer, utilisez le commutateur/MT, si vous ne pouvez pas les recréer (par exemple, ils sont tiers et que vous n'avez pas le code), votre projet ne se construira que lors de la liaison dynamique au CRT (/ MARYLAND). – Xandy