Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Att anropa en dll

Postades av 2003-03-10 14:10:28 - Berne Nielsen, i forum visual basic - allmänt, Tråden har 6 Kommentarer och lästs av 585 personer

Hej

Jag ska få en dll från en som kan C++ men inte vb… och själv har jag aldrig använt mig av dll:er. Undrar därför hur jag lämpligast skriver ett anrop till denna. Dll:en innehåller ett butterworth-filter som ska filtrera en längsprofil. Nåja… jag läser in längdprofilen i en array, och behöver förutom denna också ange en filtreringslängd.

Alltså ska följande två variabler ”skickas” till dll:en
Dim dblMinArray(2000000) as Double
Dim lngLängd as Long

Och ut vill jag ha den filtrerade profilen i en array

Kan någon tipsa mig med en lämplig kod-snutt för detta!?
-----------------------------------------------------------------

Fråga2: Om jag sen ska köra programmet på en annan dator, måste jag då registrera dll:en eller räcker det att den ligger i samma mapp?? Eller kan man gå runt detta genom att bädda in DLL:en i programmet... med programet Fusion från Bit-Arts...?

Tack på förhand! /B





Svara

Sv: Att anropa en dll

Postades av 2003-03-10 15:12:27 - Mikael Deurell

Hej!
En lösning på problemet är att be honom göra en C++ COM-komponent som innehåller den logik du vill använda. Denna kan du instansiera från VB genom:
<code>
' init stuff...
dim ref as component.class
set ref = createobject("component.class")
ret = ref.DotheMagicStuff(data,moredata)
set ref = nothing

' Take care of the returned data...
</code>

Detta bygger på att du registrerat hans dll med t.ex. regsvr32 (regsvr32 thedll.dll). Tänk på att datatyper skiljer mellan VB och C++. Särskilt vad gäller arrayer, strängar odyl. Be C++ killen att ta emot och returnera typer som VB kan hantera.

När du skall köra en COM komponent måste denna vara registrerad en instansiering innebär att SCM letar efter aktuellt progid ("component.class") under hkey_classes_root och hittar aktuell CLSID. Med hjälp av detta id kan SCM hitta var dlln finns (Under CLSID i reg). Denna laddas in i klientprocessen eller i en hostcontainer (MTS/COM+). Du måste oxo ha tillgång till det interfaceid (IID) som du vill använda för kommunikationen (om du inte använder late binding (IDispatch)). Detta är den referenstyp (pekartyp) du vill ha för kommunikation med aktuellt objekt.

Om du vill aktivera denna på en annan maskin kan du lösa det på fler sätt. Ett är att regga hans klass eller en proxy (Så att du får tillgång till IID genom typlib) på din maskin och sedan använda dcomcnfg för att styra över anropet till en annan dator via DCOM. Ett annat alternativ är att registrera komponenten i COM+/MTS och låta denna miljö sköta om remoteaktiveringen.




Svara

Sv: Att anropa en dll

Postades av 2003-03-10 19:16:38 - Berne Nielsen

Oj! det lät jobbigt...
trodde att man kunde anropa den som en funktion ungefär...
:-/


Svara

Sv: Att anropa en dll

Postades av 2003-03-11 09:05:19 - Berne Nielsen

Tack för förra svaret!
Men det här med registreringen, kan man inte få den fixad vid installationen av sitt vb-program, alltså när man kör setup-filen?? Jag har hittills använt ”Package and Deployment Wizard” i vb, denna tar ju med alla nödvändiga dll:er osv.
Det måste nämligen vara lätt för slutanvändaren att använda…


Svara

Sv: Att anropa en dll

Postades av 2003-03-11 22:43:33 - Mikael Deurell

All logik för att registrera en COM dll är förpackat i aktuell dll. Det är bara ett anrop in i den som kräns. T.ex, med hjälp av regsvr32. Givetvis kan du göra detta automatiskt med package and deployment wizard samt andra installationsprogram.


Svara

Sv: Att anropa en dll

Postades av 2003-03-12 13:16:54 - Berne Nielsen

Ok, Tack för din hjälp!

undrar dock angående koden
<code>
' init stuff...
dim ref as component.class
set ref = createobject("component.class")
ret = ref.DotheMagicStuff(data,moredata)
set ref = nothing

' Take care of the returned data...
</code>

kan "ret" (som står för returvärdet eller?) vara en array? om jag gör om lite till mina behov så blir det så här, kan det funka? vad är "DotheMagicStuff" och "component.class"? var anges dll namn och sökväg?

<code>
'IN till dll
Dim HighPf as double 'filtering wavelength (kan vara decimaltal)
Dim LowPf as double 'low bandpass filter wavelength
Dim LPsr as double 'profile sample rate (oftast 0.1 (m))
Dim LP(1000) as double 'LängsProfilen (array)
'UT
Dim LPf(1000) as double 'tar emot den filtrerade LängsProfilen

dim ref as component.class

set ref = createobject("component.class")
LPf = ref.DotheMagicStuff(LP,LPsr,HighPf,LowPf)
set ref = nothing

' Take care of the returned data...
</code>



Svara

Sv: Att anropa en dll

Postades av 2003-03-18 08:29:28 - Berne Nielsen

Kan det ovan fungera??


Svara

Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 168
27 952
271 704
1 465
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies