AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

C++ DLL in delphi einbinden

Ein Thema von mensah · begonnen am 4. Jul 2005 · letzter Beitrag vom 4. Jul 2005
Antwort Antwort
Seite 1 von 2  1 2      
mensah

Registriert seit: 4. Jul 2005
Ort: Ilmenau
8 Beiträge
 
Delphi 7 Professional
 
#1

C++ DLL in delphi einbinden

  Alt 4. Jul 2005, 13:04
Hallo liebe leute,
kann mir jemand helfen?
Ich habe ein C++ DLL in delphi eingebunden,es geht um ein EEG-Verstärker,der ein Signal(Sinusförmiges)ausgeben sollte.ich habe die functionen mit Stdcall;external;(" DLL Name") aufgerufen.leider kommt es kein Signal raus.ich bin euch dankbar für jede hilfe.
vielan dank
  Mit Zitat antworten Zitat
Benutzerbild von JasonDX
JasonDX
(CodeLib-Manager)

Registriert seit: 5. Aug 2004
Ort: München
1.062 Beiträge
 
#2

Re: C++ DLL in delphi einbinden

  Alt 4. Jul 2005, 13:10
Erstmal:
Herzlich Willkommen in der DP!


Zitat von mensah:
Ich habe ein C++ DLL in delphi eingebunden,es geht um ein EEG-Verstärker,der ein Signal(Sinusförmiges)ausgeben sollte.ich habe die functionen mit Stdcall;external;(" DLL Name") aufgerufen.leider kommt es kein Signal raus.ich bin euch dankbar für jede hilfe.
Versuch mal, die DLL in C++ einzubinden und schau, ob dann ein Signal rauskommt. Normalerweise, wenns bei der Einbindung der DLL beim Aufruf der Funktion happert, kriegt man ne AV.
Deshalb denke ich, es liegt eher an der DLL als an der Einbindung. Aber etwas Code würde die Fehlersuche etwas erleichtern, bspw. wie du die DLL einbindest, die Funktion aufrufst oder der Funktionskopf in der DLL aussieht.



[Edit]Grammatik ist doof[/edit]
Mike
Passion is no replacement for reason
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#3

Re: C++ DLL in delphi einbinden

  Alt 4. Jul 2005, 13:17
Poste doch mal das .h File hier wenn es nicht zu lang ist (und vergiss die Code-Tags nicht).
  Mit Zitat antworten Zitat
mensah

Registriert seit: 4. Jul 2005
Ort: Ilmenau
8 Beiträge
 
Delphi 7 Professional
 
#4

Re: C++ DLL in delphi einbinden

  Alt 4. Jul 2005, 13:21
Hi Mike,
danke erstmal,
der DLL wurde von einem Profi C++ Programmierer, er meint es tritt kein problem bei ihm auf ,da er leider kein delphi kann,komme ich nicht weiter.
Meine Code kann ich dir schicken.
vielan dank
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#5

Re: C++ DLL in delphi einbinden

  Alt 4. Jul 2005, 13:23
Es geht erst mal darum ob die DLL eine C++ Klasse exportiert oder normale C Funktionen.
C++ Klasse heisst Pech gehabt mit Delphi.
  Mit Zitat antworten Zitat
mensah

Registriert seit: 4. Jul 2005
Ort: Ilmenau
8 Beiträge
 
Delphi 7 Professional
 
#6

Re: C++ DLL in delphi einbinden

  Alt 4. Jul 2005, 13:28
die h-file habe ich leider nicht, da der C++ DLL-Hersteller sicher ist, dass es ein mann frei geht, will er nicht geben.
vielan dank
  Mit Zitat antworten Zitat
Benutzerbild von JasonDX
JasonDX
(CodeLib-Manager)

Registriert seit: 5. Aug 2004
Ort: München
1.062 Beiträge
 
#7

Re: C++ DLL in delphi einbinden

  Alt 4. Jul 2005, 13:33
Zitat von Robert Marquardt:
Es geht erst mal darum ob die DLL eine C++ Klasse exportiert oder normale C Funktionen.
C++ Klasse heisst Pech gehabt mit Delphi.
Ich denke nicht, dass er es geschafft hat, ohne AV o.Ä. eine C++-Klasse aus einer DLL zu importieren


Zitat von mensah:
der DLL wurde von einem Profi C++ Programmierer, er meint es tritt kein problem bei ihm auf ,da er leider kein delphi kann,komme ich nicht weiter.
Es kann auch sein, dass es bei seinem PC funktioniert, aber bei deinem nicht, also Hardware-problem. Interessant dafür wär zu wissen, wo der Ausgang hinsoll: Soundausgang, spezieller Ausgang bei einer Zusätzlich installierten Hardware, einfach nur Bildschirm ect.
Im Falle eines Hardwareproblems könntest du den Programmierer um die Anforderungen für die DLL bitten, und wenns Support für das Teil gibt, haste Glück gehabt

Zitat von mensah:
Meine Code kann ich dir schicken.
Du kannst ihn auch gern hier reinposten. (Muss nicht der ganze sein, ist eh nur besser, wenn du den Code auf den wichtigsten Teil kürzt, nämlich wo/wie du die Funktion einbindest und sie aufrufst )
Mike
Passion is no replacement for reason
  Mit Zitat antworten Zitat
mensah

Registriert seit: 4. Jul 2005
Ort: Ilmenau
8 Beiträge
 
Delphi 7 Professional
 
#8

Re: C++ DLL in delphi einbinden

  Alt 4. Jul 2005, 13:36
momemt.ich muss erst offline,bin gerade in der Bibo wo keine USB-Einkopplung möglich ist, dann bin ich in 20 min wieder online
vielan dank
  Mit Zitat antworten Zitat
mensah

Registriert seit: 4. Jul 2005
Ort: Ilmenau
8 Beiträge
 
Delphi 7 Professional
 
#9

Re: C++ DLL in delphi einbinden

  Alt 4. Jul 2005, 14:02
hier das Code:
die Deklaration der Functionen:

Delphi-Quellcode:
.
.
.
function GetBlockValues(pValues: array of single):integer;{$IFDEF WIN32}stdcall;external 'DiggerClient.dll'; {$ENDIF}
function GetBlockValuesEx (pValues: array of single;numVec:integer):integer;{$IFDEF WIN32}stdcall;external 'DiggerClient.dll';{$ENDIF}
function GetNumAvailableDataVec:integer;{$IFDEF WIN32}stdcall;external 'DiggerClient.dll'; {$ENDIF}
function WaitForNumVec(numVecToWait:integer):integer;{$IFDEF WIN32}stdcall;external 'DiggerClient.dll';{$ENDIF}[pre]

// Messung starten
   Starttick:=GetTickCount;
   Startzeit:=Now;

   if MaxChannels=UseChannels then
      // alle Kanäle
      StatusBar1.SimpleText:='Startstatus: '+IntToStr(StartMessung)
   else
   begin
      // nur einige Kanäle
// SetLength(Kanaele,UseChannels);
      for i:=0 to UseChannels-1 do
         Kanaele[i]:=i;
      //test:=StartMessungEx(Kanaele, UseChannels);
      test:=StartMessung;

      //PKanaele:=@Kanaele;
      //test:=StartMessungEx(PKanaele, UseChannels);
      memo1.Text:=IntToStr(test);
   end;

// ButtonStopClick(Sender);
end;

procedure TForm1.ButtonStopClick(Sender: TObject);
var AnzahlDaten:Integer;
    Puffer:array of single;
    i,j,k,Fenster:Integer;
    stl:TStrings;
    Zeile:String;
    t:DWORD;
begin
   if not InitOK then
      Exit;

   Memo1.Text:=IntToStr(WaitForNumVec(10));

   // Messzeit anzeigen (Zeit zwischen Start und Stop Klicken; nur intern gemessen)
   LabeledEditMesszeit.Text:=IntToStr(GetTickCount-Starttick);
   // Messung stoppen
   StopMessung;

   // 1,5s warten um Verarbeitung in DLL zu ermöglichen (evtl. reduzieren)
   t:=GetTickCount;
   while (GetTickCount-t)<1500 do
      Application.ProcessMessages;
   // wieviele Daten wurden gesammelt?
   //AnzahlDaten:=GetNumAvailableDataVec;
   AnzahlDaten:=20000;
   // Puffergröße einstellen
   SetLength(Puffer,AnzahlDaten*UseChannels);
   AnzahlDaten:=GetBlockValuesEx(Puffer,AnzahlDaten);
   Memo1.Text:=IntToStr(AnzahlDaten);

   // Diagramm füllen
   for i:=0 to UseChannels-1 do
      for j:=0 to AnzahlDaten-1 do
      try
         Chart1.Series[i].AddY(Puffer[{j*UseChannels+i}i*AnzahlDaten+j]);
      except
         Memo1.Lines.Add(IntToStr(UseChannels)+';'+IntToStr(AnzahlDaten)+';'+IntToStr(i)+';'+IntToStr(j)+';'+FloatToStr(Puffer[{j*UseChannels+i}i*AnzahlDaten+j]));
      end;

   // Daten liegen in: Puffer[j*UseChannels+i]


   // Daten in Textdatei speichern
   stl:=TStringList.Create;

   // Infos für Textdatei
   stl.Add('Kanalanzahl: '+IntToStr(UseChannels));
   stl.Add('Abtastrate: '+IntToStr(Round(StrToFloat(ListBoxSampleraten.Items[ListBoxSampleraten.ItemIndex]))));
   if CheckBoxDC.Checked then
      stl.Add('DC-Adjust: ja')
   else
      stl.Add('DC-Adjust: nein');
   stl.Add('Messzeit: '+DateTimeToStr(Startzeit));
   stl.Add('Messdauer: '+LabeledEditMesszeit.Text+'ms');
   stl.Add('');
   stl.Add('Kanalimpedanzen');
   stl.AddStrings(ListBoxImpedanzen.Items);
   stl.Add('');

   // Datenüberschrift für TXT Datei
   Zeile:='';
   for i:=0 to UseChannels-1 do
      Zeile:=Zeile+'Kanal '+IntToStr(i+1)+';';
   stl.Add(Zeile);

   // Daten ausgeben
   for j:=0 to AnzahlDaten-1 do
   begin
      Zeile:='';
      for i:=0 to UseChannels-1 do
         Zeile:=Zeile+FloatToStr(Puffer[j*UseChannels+i])+';';
      stl.Add(Zeile);
   end;
   // Text speichern
   stl.SaveToFile(ExtractFilePath(Applicati
[edit=Luckie]Robert hat es dir doch noch extra gesagt, dass du Code-tags verwenden sollst! Mfg, Luckie[/edit]
vielan dank
  Mit Zitat antworten Zitat
mensah

Registriert seit: 4. Jul 2005
Ort: Ilmenau
8 Beiträge
 
Delphi 7 Professional
 
#10

Re: C++ DLL in delphi einbinden

  Alt 4. Jul 2005, 14:09
der DLL ist in einfachem C (#define EXPORT_API extern "C" __declspec(dllexport))und nicht C++
vielan dank
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:25 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz