MFC ErweiterungsDll ein paar Fragen ... !
-
Hi zusammen,
ich habe es geschafft eine Win32Dll zu erstellen und diese in einem Vb Projekt zu verwenden !
Da ich nur Funktionen exportieren kann ist die Sach zwar gut aber ich habe in einem kleinen Arttikel gelesen dass die MFC ErweiterungsDll's viel besser sind da komplette MFC - Klassen exportiert werden können.1.Stimmt das soweit und kann ich auch eigene Klassen exportieren ?
2.ist es überhaupt möglich MFC-DLL's in VB Projekten zu verwenden (VB 6 und DotNet)?
3.Existieren hierzu Bücher, Tutorials oder sonstwas die die ganze Sache Step by Step erklären, ich hab mich fast wund gegoogeld, find aber nichts wirklich brauchbares.
Bücher die dieses Thema ausführlich behandeln wären auch sehr gut (der nächste Buchladen ist nur 10 Min. entfert
)Noch eine kleine zusatzinfo: Ich programmiere noch VS6, hab aber in 6 Wochen VS 2006 drum wärs mir ganz recht wenn die Sache unter Berücksichtigung von VS6 erklärt werden würde, wenn nicht würde ich VS 2005 Express nutzen !
Gruß
ShadowEater
-
ShadowEater schrieb:
Da ich nur Funktionen exportieren kann ist die Sach zwar gut aber ich habe in einem kleinen Arttikel gelesen dass die MFC ErweiterungsDll's viel besser sind da komplette MFC - Klassen exportiert werden können.
Aber
1. nur mit Shared MFC DLLs.
2. Auch wieder nur aus MFC Programmen heraus.
3. Kann man nicht nur mit der MFC Klassen exprotieren.ShadowEater schrieb:
1.Stimmt das soweit und kann ich auch eigene Klassen exportieren ?
Ja ber nur in C++ wieder nutzen.
Du musst darauf achten die gleiche CRT zu nutzen. Gleichfalls musst Du auf das Erzeugen und entsorgen der Klassen acht geben.Ich halte nicht viel davon Klassen zu exportieren. Ich verwende über DLL Grenzen hinweg nur Interfaces.
ShadowEater schrieb:
2.ist es überhaupt möglich MFC-DLL's in VB Projekten zu verwenden (VB 6 und DotNet)?
Ja! Aber warum willst Du das?
Allerdings kannst Du weder in VB6 noch in VB.NET die Klassen benutzen.
ShadowEater schrieb:
3.Existieren hierzu Bücher, Tutorials oder sonstwas die die ganze Sache Step by Step erklären, ich hab mich fast wund gegoogeld, find aber nichts wirklich brauchbares.
Bücher die dieses Thema ausführlich behandeln wären auch sehr gut (der nächste Buchladen ist nur 10 Min. entfert
)Detailiert dazu wüsste ich kein besseres Tutorial als die MSDN
und die vielen MFC Samples, die auch als DLLs vorliegen.ShadowEater schrieb:
Noch eine kleine zusatzinfo: Ich programmiere noch VS6, hab aber in 6 Wochen VS 2006 drum wärs mir ganz recht wenn die Sache unter Berücksichtigung von VS6 erklärt werden würde, wenn nicht würde ich VS 2005 Express nutzen !
VS 2006? Was ist das? Oder habe ich was versäumt.
Grundsätzlich hat sich an den Prinzipien zwischen VC6 und späteren VS Versionen nicht geändert.
-
Danke für die schnelle Antwort Martin,
hmmm die Sache mit dem exportieren der Klassen hörte sich einfach nur gut an, bei näherem hineindenken und ausprob. werd ich wohl auch lassen, da ich eigentlich keine Vorteile für mich sehe
!Ähmmm Vs 2005 hab ich gemeint nicht VS 2006 (zu schnell getippt
)!Aber ich habe noch eine andere Frage Dlls betreffend.
Ich habe eine Win32Dll erstellt die ich i einem Vb Projekt verwende.
Eind Funktion dieser Dll gibt mir einen Int nach VB zurück, das klappt, nun werden in meiner Funktion in der Dll noch zusätzlich string Operationen durchgeführt, als Rückgabewert habe ich ebenfalls einen Stl String.Da dies jedoch keine so gute Idee ist:
Grundsätzlich solltest Du niemals std:string's über DLL Grenzen hinweg weitergeben.
Diese Objekte sind direkt von der Compilerversion und der verwendeten CRT abhängig. Sie eignen sich in keiner Weise zum Datenaustausch zwischen Modulen. Du solltest auf PODs oder BSTR zurückgreifen.
wollte ich BSTR nutzen, aber die Dll wehrt sich tapfer !Was muss ich denn includen und wie muss die Konvertierung aussehen

ich hab der Einfachheit halber eine kleine Bsp.Fnkt erstellt
WIN32DLL02_API const char* fnWin32DLL02(void) { string test; test = "abc"; return test; }wenn ich const char* und test.c_str() nutze frißt das die dll zwar aber ich bekomm ne Zahl zurück !
vielen Dank für Deine / Eure Mühe
ShadowEater