Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

DLL/TLB από VB.Net 2005 για vb6/asp με late binding

Îåêßíçóå áðü ôï ìÝëïò R@_. Τελευταία δημοσίευση από το μέλος R@_ στις 25-08-2006, 16:42. Υπάρχουν 1 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  25-08-2006, 14:42 15911

    DLL/TLB από VB.Net 2005 για vb6/asp με late binding

    Καλό χειμώνα (=διακοπές τέλος) σε όλους :)

    Έχω φτιάξει ένα DLL σε VB.Net 2005 (32bit περιβάλλον) και θέλω να το χρησιμοποιήσω σε vb6/asp με late binding (σε 64bit περιβάλλον).

    Αρχικά το μόνο που έκανα ήταν να τσεκάρω το Register for COM Interop αλλά όταν είδα ότι δεν είχα το επιθυμητό αποτέλεσμα έψαξα και βρήκα αυτό http://blog.danbartels.com/archive/2004/09/07/180.aspx

    Πρόσθεσα στο Class Library project μου ένα COM Class Item από το Templates list οπότε ο κώδικας είχε ως εξής :

    <ComClass(ComObj.ClassId, ComObj.InterfaceId, ComObj.EventsId)> _

    Public Class ComObj

    #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 = "80f92a09-b9b8-487f-a03f-2d6f6185515d"

    Public Const InterfaceId As String = "629fd71b-783a-4779-bc19-45e56b090a2c"

    Public Const EventsId As String = "0b2179b9-f493-45ee-937f-6eb89f97d357"

    #End Region

    ' A creatable COM class must have a Public Sub New()

    ' with no parameters, otherwise, the class will not be

    ' registered in the COM registry and cannot be created

    ' via CreateObject.

    Public Sub New()

    MyBase.New()

    End Sub

    Private m_strErrMsg As String

    Public Property ErrorMessage() As String

    Get

    Return m_strErrMsg

    End Get

    Set(ByVal value As String)

    m_strErrMsg = value

    End Set

    End Property

    Public Sub ChangeMessage()

    ErrorMessage = "Now it's changed"

    End Sub

    End Class

    (Το Region "COM GUIDs" δημιουργήθηκε από την VB)

    Το έκανα compile και προσπάθησα να το χρησιμοποιήσω από τα 64bit Windows (χρησιμοποίησα το regasm για να κάνω register το TLB) με ένα vb script:

    set o = wscript.createobject("TestComObj.ComObj")
    o.errormessage="Test"
    wscript.echo o.errormessage
    set o = nothing

    Το μήνυμα που λαμβάνω είναι : Could not create object named "TestComObj.ComObj"

    Αυτό που με μπερδεύει περισσότερο είναι ότι ψάχνοντας στη Registry για TestComObj.ComObj το βρίσκω κάτω από το HKEY_CLASSES_ROOT\CLSID\{....

    Το ίδιο πρόβλημα έχω και σε 32bit windows ενώ στο μηχάνημα που έφτιαξα το DLL, το σκριπτάκι παίζει μια χαρά.

    Τι είναι αυτό που κάνω λάθος; Πώς αλλιώς να κάνω register TLB σε 64bit Windows;

     

  •  25-08-2006, 16:42 15925 σε απάντηση της 15911

    Απ: DLL/TLB από VB.Net 2005 για vb6/asp με late binding

    Δεν είχα δοκιμάσει το προφανές : να φτιάξω ένα setup για το dll :S

    Τώρα εάν αλλάξω κάτι στο DLL θα πρέπει να φτιάξω καινούριο setup ή θα είναι αρκετό ένα copy/paste;
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems