Eigene .Net DLL in VB6 verwenden

13/02/2008 - 22:23 von Wolfgang Hauer | Report spam
Hallo!

Ich habe eine (selbstverstàndlich wunderbare) dll in vb.net entwickelt (auf
Rechner A) und möchte jetzt auf Rechner B diese dll in VB6 ansprechen.
Im Project habe ich angekreuzt : Make Com Visible und Register for Com
interop

Meine Klasse beginnt wie aus dem Com-Template mit
<ComClass(YahooHandler.ClassId, YahooHandler.InterfaceId,
YahooHandler.EventsId)> _

Public Class YahooHandler

Private smAppId As String = "YahooDemo"

#Region "COM GUIDs"

' These GUIDs provide the COM identity for this class

' and its COM interfaces. If you change them, existing

' clients will no longer be able to access the class.

Public Const ClassId As String = "65b0267c-a889-4342-ab87-cd5c25781ca8"

Public Const InterfaceId As String =
"53a8d06f-b4f7-490d-aee0-26e16e987452"

Public Const EventsId As String = "a70708ca-1e5b-412c-96bd-ac0a29ed9c42"

#End Region

Public Sub New()

MyBase.New()

End Sub

Public Sub SetAppID(ByVal AppId As String)

smAppId = AppId

End Sub

Public Function GeoCode(ByVal Street As String, ByVal City As String,
ByVal Zip As String, ByVal Country As String) As FullAddress

Dim oFullAddress As New FullAddress

Dim oRequest As HttpWebRequest

Dim oResponse As HttpWebResponse = Nothing

Dim oReader As StreamReader

Dim sRequestUrl As String

Dim oCult As Globalization.CultureInfo

Dim oXml As XmlTextReader = Nothing


usw



die damit erstellte DLL habe ich ins Projektverzeichnis des VB6 Rechner
gespielt und mit Regasm mit der option /tlb: registriert.

So, jetzt kann ich die Dll wunderbar in den Project-referenzen hinzufügen
und sehe im Object-Browser alle Methoden der dll.

Wenn ich allerdings im Programm ausführe

Set o= new sysnettocom.yahoohandler bekomme ich einen Automation Error.

Was kann da fehlen oder falsch sein???

Danke, Wolfgang
 

Lesen sie die antworten

#1 Wolfgang Hauer
15/02/2008 - 18:35 | Warnen spam
Hallo !

Habe das Problem gelöst. Ursache: in VB6 ist das "Current directory" im vb
verzeichnis. Daher findet er die DLL nicht, die ich in's Projectverzeichnis
kopiert und registriert habe. Also sollte man seine Com-Dll's in das GAC
kopiren.


LG Wolfgang

"Wolfgang Hauer" schrieb im Newsbeitrag
news:
Hallo!

Ich habe eine (selbstverstàndlich wunderbare) dll in vb.net entwickelt
(auf Rechner A) und möchte jetzt auf Rechner B diese dll in VB6
ansprechen.
Im Project habe ich angekreuzt : Make Com Visible und Register for Com
interop

Meine Klasse beginnt wie aus dem Com-Template mit
<ComClass(YahooHandler.ClassId, YahooHandler.InterfaceId,
YahooHandler.EventsId)> _

Public Class YahooHandler

Private smAppId As String = "YahooDemo"

#Region "COM GUIDs"

' These GUIDs provide the COM identity for this class

' and its COM interfaces. If you change them, existing

' clients will no longer be able to access the class.

Public Const ClassId As String = "65b0267c-a889-4342-ab87-cd5c25781ca8"

Public Const InterfaceId As String =
"53a8d06f-b4f7-490d-aee0-26e16e987452"

Public Const EventsId As String = "a70708ca-1e5b-412c-96bd-ac0a29ed9c42"

#End Region

Public Sub New()

MyBase.New()

End Sub

Public Sub SetAppID(ByVal AppId As String)

smAppId = AppId

End Sub

Public Function GeoCode(ByVal Street As String, ByVal City As String,
ByVal Zip As String, ByVal Country As String) As FullAddress

Dim oFullAddress As New FullAddress

Dim oRequest As HttpWebRequest

Dim oResponse As HttpWebResponse = Nothing

Dim oReader As StreamReader

Dim sRequestUrl As String

Dim oCult As Globalization.CultureInfo

Dim oXml As XmlTextReader = Nothing


usw



die damit erstellte DLL habe ich ins Projektverzeichnis des VB6 Rechner
gespielt und mit Regasm mit der option /tlb: registriert.

So, jetzt kann ich die Dll wunderbar in den Project-referenzen hinzufügen
und sehe im Object-Browser alle Methoden der dll.

Wenn ich allerdings im Programm ausführe

Set o= new sysnettocom.yahoohandler bekomme ich einen Automation Error.

Was kann da fehlen oder falsch sein???

Danke, Wolfgang








Ähnliche fragen