Private Sub Form_Load() Dim obj As New myclass ' <- menu -> Project -> References... Dim nRet As Long Dim strIn As String Dim strOut As String nRet = objClass.myfunc(strIn, strOut) End Sub
C/C++ klasser er desværre ikke det samme som COM / ActiveX objekter - ligesom Delphi klasser heller ikke er.
Og den normale import funktion - som du angiver og jeg i øvrigt også plejer at bruge - fungerer netop kun på almindelige funktioner/procedurer i Win32 regis og ikke på klasser :-(
En Win32 DLL og en COM komponent er ikke det samme.
Man kan godt hente klasser fra en Win32 DLL, men da C++ og VB bruger forskellige konventioner, saa kan C++ klasser i en Win32 DLL naeppe tilgaes fra VB (det er et af de omraader hvor .NET er meget bedre !).
COM goer det muligt at kalde mellem flere sprog (C++, VB etc.) via en rimelig kompleks mekanisme (det er komplekst at implementere COM komponent, det er halv komlekst at kalde fra et C++ program, det er supernemt at kalde fra VB).
C++ koden skal omskrives for at kunne aendres fra Win32 DLL til COM komponent.
Hvis du ikke kan omskrive C++ koden skal du lave en COM wrapper til din Win32 DLL.
Ikke umuligt. Ikke engang svaert hvis man er skrap til udvikling af COM komponenter i C++. Men dem er der langt imellem.
Det er en "udenbys" DLL som jeg ikke kan ændre ved, desværre - så en wrapper er min eneste mulighed. At skrive en COM wrapperen i VB6 er så ikke muligt ud fra hvad du fortæller.
.NET er ikke en mulighed - jeg skal nemlig kunne bruge COM objektet fra script efterfølgende.
Desværre er mine C/C++ kundskaber meget rudimentære, men jeg vil kigge på import af klassen i delphi i stedet - der er jeg også mere velbevandret end i VB - og giver det for mange problemer laver jeg blot et lille kommandolinje-program i C som jeg kan kommunikere med via stdin/stdout.
ah.. løsningen var at anvende Delphi til at skrive en COM objekt wrapper fremfor VB.
Jeg lukker spørgsmålet her fra. Tak for hjælpen.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.