2011-07-26 2 views
0

J'essaie d'importer une bibliothèque de type .NET de tierce partie (DLL de serveur COM) en utilisant tlibimp.exe (version 11.0). Cela fonctionne essentiellement bien, mais les résultats diffèrent lorsque je l'exécute sur différents ordinateurs, l'un sous Windows XP, l'autre Windows 7. Ce qui est pire, le code généré sur la machine Win7 ne compile pas.La sortie de tlibimp.exe diffère sur différents systèmes d'exploitation

Les deux machines ont:

  • Borland C++ (RAD Studio) 2007
  • Version TLIBIMP.EXE 11.0
  • les mêmes versions de .NET Framework est installé (pour autant que je peux dire, Borland 2007 utilise v2 .NET)
  • version bcc32.exe 5,93

le compilateur échoue dans le OCX.h avec:

Parameter mismatch in write access specifier of property Font 

La ligne correspondante du code sur la machine XP (qui compile ok) est:

__property Graphics::TFont * Font={ read=GetTFontProp, write=_SetTFontProp, stored=false, index=-512 }; 

La même ligne sur la machine Win7 (qui échoue) est:

__property IFontDisp* Font={ read=get_Font, write=set_Font, stored=false }; 

Maintenant, je ne suis pas vraiment sûr d'où vient cette différence. Des idées?

acclamations Hendrik

+0

Comment un serveur COM .net peut-il exporter une VCL 'Graphics :: TFont'? –

+0

Je n'ai aucune idée, mais cela semble fonctionner. Est-ce que c'est peut-être une magie d'emballage de composants Borland? – Hendrik

+0

Je devrais ajouter qu'il y a d'énormes différences entre les deux versions de la classe en question, pas seulement une ligne. Pour commencer, la version WinXP hérite de TOleControl, et le Win7 de Oleserver :: TOleServer – Hendrik

Répondre

0

Cela peut ou ne peut pas aider mais j'eu un problème similaire en essayant d'importer deux bibliothèques de types en delphi, de c assemblées vives.

Une bibliothèque de types (A) héritée de TOLeServer, l'autre (B) de TOleControl et je ne voyais pas pourquoi, car les deux assemblys qui généraient les bibliothèques de types étaient pratiquement identiques.

La question s'est avérée être que B avait été enregistré avec regasm et A ne l'avait pas. L'enregistrement de A et la régénération de la bibliothèque de types ont résolu le problème.

Questions connexes