[VB/DCOM]Error 458

Pagina: 1
Acties:

  • Tukk
  • Registratie: Januari 2002
  • Laatst online: 17:14

Tukk

De α-man met het ẞ-brein

Topicstarter
De foutmelding:

Variable uses an Automation type not supported in Visual Basic

Ik heb een COM-executable gemaakt die als DCOM-server gebruikt gaat worden
voor een client applicatie.
Als ik de COM-exe compileer op de server en deze deploy naar de client krijg ik de eerder gemelde error 458. In de com-exe heb ik in de functie variabelen als string en integers, maar ook Recordsets van Ado.
Indien ik de broncode van de client op 1 van beide pc's draai is er geen probleem,
alleen executables geven dit probleem.

Indien ik de com.exe die op de server heb gecompileerd naar de client zet en daar aangeef dat een andere com.exe binair compatible dient te zijn krijg een melding zoals error 458 (althans met dezelfde strekking), terwijl de brond code exact hetzelfde is.

Mijn vragen na dit lange verhaal:
- wie kent dit probleem en kan me wat tips geven over waar ik naar dien te kijken.
(ben momenteel bezig naar IE versies te kijken)
- Wat kan deze foutmelding veroorzaken. De broncode draait op beide perfect, maar broncode van deze ene pc levert binair andere code dan van de andere pc.
Hoe kan dit?

De client en de server hebben beide VB 6.0 SP5 geinstalleerd en MDAC 2.7.

Ik gebruik geen User Defined Types.
Ik heb wel verschillende installaties van IE (allen 5.+ of 6.+) op de pc's

Gevonden sites:
vooral:
http://msdn.microsoft.com...nvalidtypelibvariable.asp

en verder:
http://www.tek-tips.com/g...31/pid/195/lev2/4/lev3/30
vbcity uit de cache van google

Q: How many geeks does it take to ruin a joke? A: You mean nerd, not geek. And not joke, but riddle. Proceed.


  • Tukk
  • Registratie: Januari 2002
  • Laatst online: 17:14

Tukk

De α-man met het ẞ-brein

Topicstarter
* Time Warp *

Ik ben een stuk verder, alleen begrijpen doe ik het niet.

Deze DCOM-exe wordt gereferenced vanuit VB, zodat je de volgende regel code in je VB Code kan maken:

Visual Basic:
1
2
dim gObj as Comexe.ComClass
Set gObj = new Comexe.ComClass


Op regel 2 krijg ik de error 458.
Nu kan ik de foutmelding omzeilen door niet early binding,maar late binding te gebruiken. De code ziet er nu asl volgt uit:

Visual Basic:
1
2
dim gObj as Object
Set gObj = CreateObject("Comexe.ComClass")


Nu krijg ik geen enkele foutmelding meer op geen enkele client.
Ok, het werkt nu (eindelijk), maar kan iemand mij deze situatie uitleggen. :?

Q: How many geeks does it take to ruin a joke? A: You mean nerd, not geek. And not joke, but riddle. Proceed.


  • Tukk
  • Registratie: Januari 2002
  • Laatst online: 17:14

Tukk

De α-man met het ẞ-brein

Topicstarter
*Laatste kick, anders beschouw ik het als case closed *

[ Voor 11% gewijzigd door Tukk op 28-11-2003 11:50 ]

Q: How many geeks does it take to ruin a joke? A: You mean nerd, not geek. And not joke, but riddle. Proceed.


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 22-05 16:53
Het zou natuurlijk kunnen dattie bij de late binding methode alleen de items opzoekt in de interface die jij gebruikt, en dat daar niet het item bijzit die de fout veroorzaakt.

Ik heb deze melding een keer gehad toen ik bezig was met het schrijven van een ATL dll waarbij ik de interfaces verkeerd had gedeclareerd in mijn olb.

Misschien dat dat hier ook het geval is ? Dunno ....

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.