Bonjour,
Je viens du monde Java et mes connaissances C++ sont limit�es: ce que j'avais appris en fac, loooong time ago + quelques projets de petite envergure...
J'h�rite donc d'un projet important C++ (une dll) et j'acc�de � cette dll depuis Java (via JNI). Le projet C++ initial a �t� cr�� sous VS 6 et je l'ai port� sous VS 2008. Jusque l� tout baigne.
En for�ant une exception C++ � des fins de test, je retrouve dans le dump Java ceci:
...
0x00400000 - 0x00423000 C:\bin\java\bin\java.exe
0x7c920000 - 0x7c9e6000 C:\WINDOWS\system32\ntdll.dll
0x7c800000 - 0x7c912000 C:\WINDOWS\system32\kernel32.dll
0x77d70000 - 0x77e1d000 C:\WINDOWS\system32\ADVAPI32.dll
0x77c20000 - 0x77cbf000 C:\WINDOWS\system32\RPCRT4.dll
0x76f00000 - 0x76f13000 C:\WINDOWS\system32\Secur32.dll
0x7c340000 - 0x7c396000 C:\bin\java\jre\bin\msvcr71.dll
0x6d870000 - 0x6dac0000 C:\bin\java\jre\bin\client\jvm.dll
0x77f30000 - 0x77fc1000 C:\WINDOWS\system32\USER32.dll
0x77bd0000 - 0x77c18000 C:\WINDOWS\system32\GDI32.dll
0x76a50000 - 0x76a7f000 C:\WINDOWS\system32\WINMM.dll
0x6d320000 - 0x6d328000 C:\bin\java\jre\bin\hpi.dll
0x76b20000 - 0x76b2b000 C:\WINDOWS\system32\PSAPI.DLL
0x6d820000 - 0x6d82c000 C:\bin\java\jre\bin\verify.dll
0x6d3c0000 - 0x6d3df000 C:\bin\java\jre\bin\java.dll
0x6d860000 - 0x6d86f000 C:\bin\java\jre\bin\zip.dll
0x10000000 - 0x10430000 C:\tmp\trial\MyDLL.dll
0x71a80000 - 0x71a8a000 C:\WINDOWS\system32\WSOCK32.dll
0x71ad0000 - 0x71ae7000 C:\WINDOWS\system32\WS2_32.dll
0x77b70000 - 0x77bca000 C:\WINDOWS\system32\msvcrt.dll
0x71ac0000 - 0x71ac8000 C:\WINDOWS\system32\WS2HELP.dll
0x775c0000 - 0x7764b000 C:\WINDOWS\system32\OLEAUT32.dll
0x77480000 - 0x775b9000 C:\WINDOWS\system32\ole32.dll
0x78480000 - 0x7850d000 C:\WINDOWS\WinSxS\x86_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.21022.8_x-ww_D08D0375\MSVCP90.dll
0x78520000 - 0x785c3000 C:\WINDOWS\WinSxS\x86_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.21022.8_x-ww_D08D0375\MSVCR90.dll
....
Ce sont surtout les deux derni�res DLL qui m'inqui�tent, car situ�es dans WinSxs. La trace d'erreur est obtenue sur une machine 2K3 server sur laquelle j'avais recompil� le projet C++ et les deux DLL existent bel et bien dans WinSxS sur cette machine. Mais j'ai fait un test simple: j'ai copi� dans le path les 2 DLL runtime et par la suite j'ai mis � la Corbeille le contenu du r�pertoire C:\WINDOWS\WinSxS\x86_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.21022.8_x-ww_D08D0375\ . A l'ex�cution, il y a un message d'erreur, comme quoi il ne trouve pas les biblioth�ques n�cessaires.
Deux questions:
1. Comment puis-je me d�barasser du nom EN DUR dans ma DLL (� savoir, C:\WINDOWS\WinSxS\x86_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.21022.8_x-ww_D08D0375\MSVCP90.dll) et pouvoir mettre une copie de MSVCP90.dll dans le path (� c�t� de ma DLL que j'appelle depuis Java) ?
2. J'ai �galement constat� que � chaque fois que je refais un build de la DLL sous C++, VS 2008 me cr�e un nouveau r�pertoire sous C:\WINDOWS\WinSxS\ avec les deux DLL dedans (en fait il y en a une 3�me, toujours un runtime). Y a-t-il un moyen d'emp�cher ce fonctionnement (car avec mon exp�rience C++ je vais compiler des centaines de fois et je pense � l'espace disque :-D :-D)
D'avance un grand merci.