2009-02-10 4 views
0

J'utilise GenTLB.exe pour compiler un fichier ridl en fichiers .tlb et _TLB.pas.Pourquoi GenTLB renomme-t-il des symboles (en ajoutant '_')

Dans le fichier _TLB.pas résultant, il y a des indications qu'il a renommé un nombre de symboles en ajoutant un trait de soulignement à la fin du nom.

Un échantillon des indices est:

// Errors: 
// Hint: Symbol 'Assign' renamed to 'Assign_' 
// Hint: Enum Member '_amStretch' of 'EnumVRSAppliedMaterial' changed to '_amStretch_' 
// Hint: Enum Member '_amTile' of 'EnumVRSAppliedMaterial' changed to '_amTile_' 

La ligne de commande que j'utilise avec GenTLB est:

GenTLB -P -Pt+ <ridl file> 

je reçois le même problème survenant si j'utilise l'outil TLIBIMP ainsi.

Répondre

3

Assign est renommé Assign_ en raison d'un mappage dans tlibimp.sym, un fichier texte au format INI dans le même répertoire que tlibimp.

Une autre partie de la logique ajoute continuellement '_' jusqu'à ce que le nom soit unique par rapport aux noms globaux précédents tlibimp a trouvé. Tous les membres de l'énumération sont interprétés comme globaux. Y a-t-il d'autres instances de _amTile etc. dans le fichier .pas généré?

+0

Merci. Le changement de nom est un piège méchant - je vais devoir décider de la meilleure façon de l'éviter. Oui, il existe une autre instance de _amTile dans le fichier .pas généré - on dirait que je suis coupable de doubler sur certaines choses lors de la génération du code ridl :-( –

5

Je ne suis pas sûr, mais souvent un trait de soulignement est ajouté devant un nom, si le nom est en conflit avec et exsisting nom (par exemple, mot reserwed, et ainsi de suite). Ça pourrait être quelque chose comme ça.

Questions connexes