Generer un manifest pour utiliser la msvcrt.dll avec masm
ToutEnMasm
Messages postés587Date d'inscriptionjeudi 28 novembre 2002StatutMembreDernière intervention13 décembre 2022
-
7 oct. 2007 à 18:20
ToutEnMasm
Messages postés587Date d'inscriptionjeudi 28 novembre 2002StatutMembreDernière intervention13 décembre 2022
-
9 oct. 2007 à 16:12
Bonjour,
Pour pouvoir utiliser directx 9 avec masm,j'ai lié la msvcrt.lib a mon projet.Celle ci permet d'utiliser la CRT run time,directx en a besoin pour fonctionner.L'ennui est qu'il est obligatoire d'ajouter un manifest au source , faute de quoi on obtient divers messages d'erreurs concernant la "mspdb80.dll".
Il y a vraiment peu de documentation la dessus concernant masm.
http://www.codeproject.com/cpp/vcredists_x86.asp#Shared_CRTs Le plus souvent il s'agit du c++, quelqu'un pourrait-il m'éclairer ?????????
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 9 oct. 2007 à 13:36
DirectX n'a aucun besoin de CRT au niveau de ton prog, il est de loin préférable que ton prog ne soit pas lié directement à une msvcrtxxx.dll, de ce fait aucun besoin non plus de manifest.
Je t'ai fait un exemple minimal:
http://brunews.com/Device.zip C'est un exemple du SDK DX que j'ai remodelé sans CRT.
Attention aux directories du sdk que j'ai mises dans mon proj, je n'ai pas installé le sdk, juste décompressé dans un dossier et je le virerai sous peu (c'est pas mon taf le DX...). Si tu veux recompiler, faudra adapter les directories d'include et lib.
ToutEnMasm
Messages postés587Date d'inscriptionjeudi 28 novembre 2002StatutMembreDernière intervention13 décembre 20223 9 oct. 2007 à 15:07
Salut,
Sympa pour l'exemple en c.
Ma machine me dit "Direct3DCreate9Ex cannot be found in d3d9.dll"
La porte d'entrée sur directx reste fermée !.
J'ai le dernier SDK directx sur ma machine et le dernier Directx9_0C dans mon systeme.
Il y aurait il une version plus récente ?.Peut être la dix ?.
Dans d3d9.h,je ne trouve que Direct3DCreate9.
A part ça,la réponse est juste mais incomplète pour masm.
On a deux solutions:
****** Soit lié avec libcmt.lib,et ça le c le fait sans prévenir.
Dans ce cas avec masm il faut fournir l'entrée main.
****** deuxieme solution:
Se lié a la msvcrt.lib et la il faut un manifest, pas de e içi,le fichier doit avoir l'extension .manifest pour être reconnu comme tel par mt.exe.
M'enfin,tout ça c'est pour dire que je suis franchement @è$$*= avec le troisiéme exemple du tutorial directx(traduit fidèlement en masm) , il fait tourner un triangle (en c++).
En masm,j'en arrive au point ou :
La traduction faite a partir du fichier de désassemblage du c++,n'a aucuin bug (windbg)
Le D3DSpy.exe fournit avec le sdk me dit que tout fonctionne et est ok.
J'ai testé mon appli avec les deux types de liens.
et ................. le triangle ne tourne pas !!!!!!!!
Qui peut m'apporter ne serait-ce qu'une piste?
merci mour la réponse
et je compile avec un bat de ce genre:
SET fOut=%~dp0%~n0.
SET myDir=%~dp0
if exist %myDir%*.obj del %myDir%*.obj
if exist %myDir%*.exe del %myDir%*.exe
if exist %myDir%*.res del %myDir%*.res
path %~d0\Masm32\BIN7
if not exist %fOut%rc goto noResource
Rc.exe /v %fOut%rc
cvtres.exe /nologo /machine:ix86 /out:%myDir%Rsrc.obj %fOut%res
:noResource
Ml.exe /c /coff /nologo %fOut%asm
Link.exe /nologo /SUBSYSTEM:WINDOWS /out:%fOut%exe %myDir%*.obj
if not errorlevel 1 goto exitbat
:erratum
pause
:exitbat
if exist %myDir%*.obj del %myDir%*.obj
if exist %myDir%*.res del %myDir%*.res
ciao...
BruNews, MVP VC++
Vous n’avez pas trouvé la réponse que vous recherchez ?
ToutEnMasm
Messages postés587Date d'inscriptionjeudi 28 novembre 2002StatutMembreDernière intervention13 décembre 20223 9 oct. 2007 à 16:00
Pour l'entrée main,il s'agit d'un message d'erreur du lieur lorsqu'on introduit la librairie libcmt.lib.
Traditionellement avec masm,on utilise
start:
end start
Pour définir la zone de code,avec libcmt.lib c'est "main: end main",et là le lieur est content.
Je vais télécharger la mise à jour de directx et voir si ......
ToutEnMasm
Messages postés587Date d'inscriptionjeudi 28 novembre 2002StatutMembreDernière intervention13 décembre 20223 9 oct. 2007 à 16:12
Re,
Pour la mise a jour,elle me dit "rien a faire",je suis a jour.
Par contre , j'ai XP au lie de vista.Le problème doit venir de là.
Pour info,suit le batch que j'utilise pour compiler,il est à la mode du c++ 8 express et utilise son envirronnement; j'incorpore le .manifest en compilant la ressource.
---------------------------------------------------------------------------------
call "vcvars32.bat"
rem CMD