VC++-DLL die einen String liefert?

ManicMarble

Erfahrenes Mitglied
Hallo an alle C-Gurus!

Ich bin leider absolut kein C-Spezialist sondern völlig verwöhnt von VB und ähnlichen "Anfänger-Sprachen". Und als Info vorab: Ja, ich habe die Suchfunktion in Anspruch genommen - es kommen auch einige Beiträge zum Thema DLL-Programmierung in VC++ nur leider nichts, was mir wirklich weiterhilft. Und sowohl die VC-Online-Doku (MSDN) als auch alle meine C-Bücher kommen zu diesem Thema nicht wirklich auf den Punkt. Deshalb wage ich es einfach mal, hier zu fragen:

Wie programmiere ich eine DLL in VC++ 6.0, die mittels einer exportierten Funktion einen String zurück liefert?

Dass das nicht so einfach zu sein scheint - besonders wenn man mit dem Pointer auf Kriegsfuß steht - habe ich bereits lernen müssen. Das DLL-programmieren ansich ist auch nicht das Problem, ich habe es ohne Weiteres geschafft, DLL-Funktionen zu schreiben, die Zahlen zurückliefern - aber einen String?

Am besten wäre mir geholfen, wenn jemand eine kleine Anleitung oder Beispiel-Code für eine DLL mit einer einzigen Funktion "halloWelt()" posten würde, die in VB wie folgt zu verwenden wäre (nachdem sie dort korrekt deklariert ist):
Code:
Sub main()
    Dim s
    s = halloWelt()
    MsgBox s
End Sub
Wobei dann als Ergebnis eine Messagebox "Hallo Welt" ausspuckt.

Sollte das zuviel verlangt sein, dann wäre ich natürlich auch mit einem passenden Literatur- oder WWW-Verweis zufrieden.

Auf Hilfe hoffend,
Martin
 
Zuletzt bearbeitet:
Starte VC++.
Gehe auf Datei -Neu - Dll Projekt - Projekt das einige Symbole exportiert.
Nun sieht man das Prinzip.

__declspec(dllexport) char* getString()
{
return "Hallo";
}

Das Makro sagt, dass die DLL diese Funktion exportiert.

Ansonsten kann man eine def Datei zu Projekt hinzufügen die diese Funktion angibt (suche in MSDN).

Um Die DLL einzubinden macht man LoadLibrary , GetProcAddress um sie während der Laufzeit einzubinden oder man Linkt die DLL zum Projekt durch angabe der *.lib Datei.

Siehe auch hier:

http://www.codeproject.com/dll/
 
Ich habe ein ähnliches Problem.

Leider hat mir der Beirag nicht helfen können. Wenn mir jemand einen Beispiel-Code zeigen könnte der einen String zurückliefert.

Soviel ich weiß, muss man da mit Zeigern arbeiten und irgendwie den Speicher auslesen. Leider bin ich da nicht so fit.

Wenn mir jemand helfen könnte wäre ich sehr verbunden.
 
Zurück