SIGSEGV - Segmentation Fault bei dll Funktionsaufruf

Alles rund um die Programmierung mit Qt
embweb
Beiträge: 15
Registriert: 15. Oktober 2009 12:30
Wohnort: Alling
Kontaktdaten:

__stdcall ?

Beitrag von embweb »

Hallo noch mal,

ich hab' jetzt mehrere Bücher durchwühlt und in einem alten Buch von Microsoft zur Windows 95 Programmierung hab' ich dann endlich mal ein ausführliches Kapitel zu dlls gefunden.

Kann es sein, dass in meiner Typendefinition einfach "nur" ein __stdcall fehlt ? Also anstatt

Code: Alles auswählen

typedef PICO_STATUS (*prot_psPspShort) (short* handle);
einfach :

Code: Alles auswählen

typedef PICO_STATUS (__stdcall *prot_psPspShort) (short* handle);
Nach dieser Änderung habe ich jetzt keinen Absturz mehr und meine Test main läuft beliebig oft durch. Kein SIGSEGV oder Returnwert ungleich 0. :)
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

embweb hat geschrieben:Allerdings gibt es im SDK keine ps4000.c ... nur die Header und ein Beispiel für MS Express / Kommandozeile.
Äh... Ganz spontan fällt mir ein, dass du das aber gar nicht mit QLibrary machen musst. Warum includest du nicht einfach den Header und Linkst dein Programm ganz normal gegen die ps4000.dll?
embweb
Beiträge: 15
Registriert: 15. Oktober 2009 12:30
Wohnort: Alling
Kontaktdaten:

QLibrary vs. direktes einbinden

Beitrag von embweb »

Hallo franzf,

der Weg mit QLibrary schien mir der komfortablere, da ich die dlls so einfach austauschen kann, ohne die ganze App neu zu übersetzen.
Ein weiterer Vorteil wäre dann bei der Installation des Messsystems: Betriebssystem mit Hardware installieren und die dlls für die Kontroll-Applikation sind alle auf aktuellem Stand und vorhanden.

Aber Du hast schon recht - ich könnte sie auch einfach mit linken, dann wird meine exe halt nur etwas größer.

Vielen Dank jedenfalls allen, die mir hier mit meinem Problem geholfen haben.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: QLibrary vs. direktes einbinden

Beitrag von Christian81 »

embweb hat geschrieben:l
Aber Du hast schon recht - ich könnte sie auch einfach mit linken, dann wird meine exe halt nur etwas größer.
Ich glaube hier liegt ein Verständnisproblem vor...
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
embweb
Beiträge: 15
Registriert: 15. Oktober 2009 12:30
Wohnort: Alling
Kontaktdaten:

dll vs lib

Beitrag von embweb »

Ja stimmt, Christian81, sorry.
Ich war gerade schon wieder einen Schritt weiter... beim Einbinden einer LIB.
Peak Systems u.a. liefern auch eine LIB mit und wenn man die mit linkt, wird die exe größer. Bei der dll ist das natürlich nicht der Fall, da die dann auch - wie der Name ja schon sagt - dynamisch zur Laufzeit nachgeladen wird, wenn gefunden.
Antworten