webForumDet fria alternativet

Com ifrån .net-class

7 svar · 374 visningar · startad av Travoni

TravoniMedlem sedan okt. 20041 556 inlägg
#1

Jag försöker att göra en com.tlb ifrån en .net class enligt:
http://www.codeproject.com/vb/net/MusaExposingCOM.asp
Jag har kört den i regasm osv utan problem.
Allt går bra tills jag skall köra den i vb6 då jag får "Automation error -2147024894".

I minclass.vb

Imports System.Runtime.InteropServices

<Guid("32D6721D-062C-454a-A786-FDE9CB733FAB"), _
InterfaceType(ComInterfaceType.InterfaceIsIDispatch)> _
Public Interface _demo
    <DispId(1)> Function Concat(ByVal s1 As String, ByVal S2 As String) As String
    <DispId(2)> ReadOnly Property ErrorMsg() As String
End Interface

<Guid("EFFFC0FA-648C-487f-8BDF-3F394F169B35"), _
ClassInterface(ClassInterfaceType.None), ProgId("comDemo.demo")> _
Public Class demo : Implements _demo
    Private csError As String ' stores the error message
    Public ReadOnly Property ErrorMsg() As String Implements _demo.ErrorMsg
        Get
            Return csError
        End Get
    End Property
    Public Function Concat(ByVal str1 As String, ByVal str2 As String) As String Implements _demo.Concat
        Return str1 & " " & str2 & " Tid: " & Now().ToString
    End Function
End Class

I vb6:

Set obj = CreateObject("comDemo.demo")
MsgBox (obj.concat("Ett", "Två"))

Vad är fel?

Jesper TMedlem sedan nov. 20017 144 inlägg
#2

Felpostat...

Inlägget känns felpostat, skulle passa bättre i .net-forumet.

clarkbonesMedlem sedan feb. 20013 023 inlägg
#3

Har du lagt NET-dll:en i samma mapp som den VB6-exe:n?

TravoniMedlem sedan okt. 20041 556 inlägg
#4

Nix tlb-filen ligger i system32 och assemblyn, behövs den? Den ligger i .net mappsystemet någon stans.

TravoniMedlem sedan okt. 20041 556 inlägg
#5

Nu har jag testat att lägga tlb:n och dll:en i samma. Kompilerat om och kört om regasm utan framgång.

TravoniMedlem sedan okt. 20041 556 inlägg
#6

Yes, nu funkar det ju. Om jag gör som du säger. lägger exefilen i samma mapp som dll:en och tlb-filen.

Men jag testade och lägga över det hela på en burk utan .netframework men då gick det inte alls och det var ju lixom det som var tanken.

Hur gör jag då?

clarkbonesMedlem sedan feb. 20013 023 inlägg
#7

Det du vill går nog inte. Regasm & tlb-varianten fungerar endast som en länk/wrapper mellan COM och .NET. För att kunna exekvera .NET-kod måste frameworket installeras. Så har jag fattat det i a f.

emissionMedlem sedan dec. 19996 721 inlägg
134 ms totalt · 3 externa anrop · v20260731065814-full.102f7fcd
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)