Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Visual Basic 6.0 / VBA » Vb-arrays an eine C++-dll

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
18.07.2003, 11:33 Uhr
~Gast
Gast


Hallo!

Ich muß folgendes machen:

Ich habe 100 Strings in einer Größenordnung von je 10.000 Zeichen.
Diese sollen in ein Array gepackt werden. So das jedes Element des Array je 10.000 Zeichen beinhaltet.
Das ist auch nicht das Problem.

Mein eigentliches Problem ist:

1) Wie übergibt man in VB einen (String) Array an eine c++ DLL?
2) Wie muß die DECLARE lauten?


Und wenn es jemand weiß:
3) Wie muß es in der C++-DLL behandelt werden? Als char** oder so?
Irgendwie komme ich momentan nicht voran!

Danke im voraus!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
18.07.2003, 13:30 Uhr
Pablo
Supertux
(Operator)


Ich hab im Moment nicht die Deklaration von DECLARE im Kopf, muss wohl zu Hause mal schauen.

Ein String ist allerding in C++ als char* zu interpretieren, und weil char* ein Pointer in C++ ist, dann muss man in VB diese String byRef weitergeben, wenn man will, dass sie auch verändert werden. Wenn du dein String verändern willst, dann mus die C++ Funktion auch die Länge des Strings übernehmen.


Ich sag die DECLARE später.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
18.07.2003, 15:19 Uhr
~Gast
Gast


Inzwischen bin ich ein wenig voran gekommen:


Visual Basic:
Declare sub teste Lib "test.dll" (ByRef aEgal() As String, ByVal nCount As Long) As Long

...
aEgal(100) As String

aEgal(0) = "Text in einer Länge von 10000 Zeichen"
aEgal(1) = "Text in einer Länge von 10000 Zeichen"
...
aEgal(99) = "Text in einer Länge von 10000 Zeichen"



in c++ (da bin ich noch unschlüssig und noch nicht weitergekommen!):


C++:
extern "C" __declspec(dllexport) long teste(char** aEgal[], void(*nCount) (int nZahl))



Aber es läuft in c++ noch nicht. Was mache ich nur falsch?

P.S.: Ob ich meine Frage lieber im c++-Forum stelle????

Dieser Post wurde am 04.08.2003 um 15:26 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
18.07.2003, 16:22 Uhr
Pablo
Supertux
(Operator)


Wenn du eine Frage zu C++ hast, d.h. wie du die Funktion schreiben willst, dann frag nicht im C++ Forum nach, sondern im VC++ / MFC Forum. Um ehrlich zu sein, habe ich noch nie eine solche Funktion in C++ schreiben müssen, damit ich über DECLARE in VB benutzen kann. Vielleicht weiß jemand von VC++ mehr, wie man eine dll erstellt. Die dlls die ich erstellt habe, sind im Prinzip nur VB dlls.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
18.07.2003, 16:27 Uhr
~Gast
Gast


Hallo Pablo!

Siehe mal folgenden Link:

www.fun-soft.de//forum/showtopic.php?threadid=3306

Ich hatte es bereits ins c++ /MFC Forum gestellt, aber jemand hat es wieder ins vb-Forum verschoben!

Was meinst, was ich jetzt machen soll? Ob ich es nochmal ins mfc-Forum poste?

Dieser Post wurde am 18.07.2003 um 16:31 Uhr von Pablo Yanez Trujillo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
18.07.2003, 16:30 Uhr
Pablo
Supertux
(Operator)


Tja, hab ich gesehen, ich hab dieses Thread auch geschlossen. Das Problem ist, dass du eine VB in VC++ Forum stellst. Frag lieber da nach, wie du eine DLL schreiben musst, damit man ihre Funktionen als API funktionen verwendet kann, d.h. mach da eine reine VC++ Frage.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
18.07.2003, 16:32 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


Probier es im VC++ Forum nochmal, aber so das man sofort erkennt wo dein Problem liegt...
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
18.07.2003, 16:36 Uhr
~Gast
Gast


@FloSoft

Gerade eben habe ich meine Frage aufgrund der Empfehlung von Pablo im MFC-Forum gestellt!

Werde ich jetzt wieder verschoben????
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
18.07.2003, 16:42 Uhr
Pablo
Supertux
(Operator)


Wenn es nur um C nicht, wenn du eine VB Lösung willst, schon
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
19.08.2003, 09:26 Uhr
~RHBaum
Gast


Du musst natuerlich auf die Typen achten ...

VB nutzt als Standard Datentypen folgendes:

String = BSTR
Array = SAFEARRAY
Variant = VARIANT

das sind alles flache strukturen, die du easy an eine dll uebergeben kannst.
Auf der dll und c/c++ seite musst dich dann halt mit diesen Typen auseinandersetzen. Nutzt die MFC (tues in dlls leiber nich), dann Gibts die COLE-Wrapperklassen fuer diese Datentypen. Bindest paar ATL header ein, bekommst auch support fuer diese Typen (CComBSTR z.B.)

Ciao...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ Visual Basic 6.0 / VBA ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: