Gå til innhold

Porte VB6 COM-objekt til .NET?


Anbefalte innlegg

Hei, lurte litt på om noen har erfaring med å porte VB6 COM-objekter til .NET?

 

Jeg bruker en applikasjon som lar seg tilpassse på enkelte steder. Jeg kan benytte seg av et API, men applikasjonen er skrevet i VB6 og API-dokumentasjonen likeså.

 

Component interface:

mycomponent.clsmyclass

 

Declaration: (en del forenklet)

Public Function DoSomething(ByVal v_SomeString As String, ByRef r_MyCols(), ByRef r_MyValues())

De to siste parameterne er arrays, litt usikker på datatypen, vil tippe det er enten Variant eller String.

Funksjonen returnerer et 2d-array, selv om det ikke kommer frem av funksjonsdeklarasjonen.

 

Mitt .NET/C# forslag sålangt:

public class clsmyclass
{
public object[,] DoSomething(string v_SomeString, ref object[] r_MyCols, ref object[] r_MyValues)
{
	System.IO.File.WriteAllText("C:\\debug.txt", "OMFG! :D:D:D");
	object[,] r = new object[2, 1];
	r[0, 0] = "1";
	r[1, 0] = "";
	return r;
}
}

 

Jeg har huket av for "Register for COM interop" på prosjektets egenskaper. Er det tilsvarende RegAsm.exe?

Jeg får nemlig bare testet komponenten i et virtuelt miljø på pc'en min, mens utviklingen skjer på host-pc'en.

Jeg har registrert den slik:

RegAsm.exe MyComponent.dll /tlb:MyComponent.tlb

Prøvde en test, men fikk en lite spesifisert feil i applikasjonen som forsøkte å kalle på komponenten min? Noen som har noen tips? Noen åpnenbare feil på min lille kodesnutt så langt?

Endret av Spartakus
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...