DLL - Shared Library - Parameter und ReturnWert

Alles rund um die Programmierung mit Qt
Antworten
conan2011
Beiträge: 15
Registriert: 18. Januar 2010 10:21

DLL - Shared Library - Parameter und ReturnWert

Beitrag von conan2011 »

Ich erstelle gerade mit Qt eine minimale DLL.
Kompilieren: klappt!
Funktionsaufruf: klappt!(per Konsole mit rundll32.exe)
Aber:
Funktionsparameter übergeben: Klappt NICHT
ReturnWert erhalten: Kappt NICHT


Es ist mit ein Rätsel, warum die Funktion "foo" nicht den übergebenen Parameter ausliest

Hier mein Code:

myDll.pro

Code: Alles auswählen

    TEMPLATE = lib
    HEADERS += main.h
    SOURCES += main.cpp
    DEFINES += TEST
main.h

Code: Alles auswählen

#include <QtGui>

#if defined TEST
#define TEST_COMMON_DLLSPEC  Q_DECL_EXPORT
#else
#define TEST_COMMON_DLLSPEC  Q_DECL_IMPORT
#endif

extern "C" TEST_COMMON_DLLSPEC int foo(int a);
main.cpp

Code: Alles auswählen

#include <QtGui>
#include <QFile>
#include "main.h"

int foo(int a)
{
    QFile file(QString("C:/main_%0.txt").arg(QString::number(a)));
    if (file.open(QIODevice::WriteOnly | QIODevice::Text))
    {
        file.write("Klappt");
        file.close();
    }
    return 12;
}
Wenn ich als Parameter eine Zahl übergebe, z.B. 5, blaibt die Variable "a" dennoch immer unbeschrieben, bzw. enthält den Wert, der gerade zufällig an der Speicheradresse von a steht, und das ist immer IRGENDeiner
Rückgabewert erhalte ich auch nicht :/

Weiß jemand Rat?
Never argue with an idiot,
he drags you down to his level,
and beats you with experience!
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: DLL - Shared Library - Parameter und ReturnWert

Beitrag von Christian81 »

Und wo ist Dein Hauptprogramm?
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
conan2011
Beiträge: 15
Registriert: 18. Januar 2010 10:21

Re: DLL - Shared Library - Parameter und ReturnWert

Beitrag von conan2011 »

Hauptprogramm? Sowas wie eine "main()" innerhalb der DLL?
Ist das nötig?

Die DLL soll nur ein paar Hilf-Funktionen bereitstellen, darum gibt es kein "Hauptprogramm" sondern nur eine Funktion "foo(...)".
Never argue with an idiot,
he drags you down to his level,
and beats you with experience!
brax
Beiträge: 208
Registriert: 11. Mai 2010 11:22

Re: DLL - Shared Library - Parameter und ReturnWert

Beitrag von brax »

Nein, in der dll ist das nicht nötig. Zum Testen der dll allerdings schon. rundll32.exe eignet sich nur sehr beschränkt für dieses Testen: http://de.wikipedia.org/wiki/Rundll32#T ... lerquellen

Schreib doch einfach noch ein Hauptprogramm, mit dem Du die dll lädst (kannst Du auch per import library machen) und die Funktion aufrufst. Wenn da auch Probleme auftreten, poste den Code und die Fehlerbeschreibung.
Antworten