![]() |
C++ DLL in delphi einbinden
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. |
Re: C++ DLL in delphi einbinden
Erstmal:
Herzlich Willkommen in der DP! :party: Zitat:
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] |
Re: C++ DLL in delphi einbinden
Poste doch mal das .h File hier wenn es nicht zu lang ist (und vergiss die Code-Tags nicht).
|
Re: C++ DLL in delphi einbinden
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.:-) |
Re: C++ DLL in delphi einbinden
Es geht erst mal darum ob die DLL eine C++ Klasse exportiert oder normale C Funktionen.
C++ Klasse heisst Pech gehabt mit Delphi. |
Re: C++ DLL in delphi einbinden
die h-file habe ich leider nicht, da der C++ DLL-Hersteller sicher ist, dass es ein mann frei geht, will er nicht geben.
|
Re: C++ DLL in delphi einbinden
Zitat:
Zitat:
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:
|
Re: C++ DLL in delphi einbinden
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
|
Re: C++ DLL in delphi einbinden
hier das Code:
die Deklaration der Functionen:
Delphi-Quellcode:
[edit=Luckie]Robert hat es dir doch noch extra gesagt, dass du Code-tags verwenden sollst! :roll: Mfg, Luckie[/edit]
.
. . 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 |
Re: C++ DLL in delphi einbinden
der DLL ist in einfachem C (#define EXPORT_API extern "C" __declspec(dllexport))und nicht C++
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:44 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz