Newsgroup: it.comp.lang.c++
Titolo: [?] DLL in VC da usare in VB

Ciao a tutti. Premetto che è un po' di tempo che non mastico C/C++ quindi
scusate la mia ignoranza che potrebbe sembrare (a molti?) banale. Ho aperto
Visual C++ (6.0) e ho cheato un nuovo progetto Win32 dll". A questo punto mi
sono trovato davanti questo codice:
// Test2.cpp : Defines the entry point for the DLL application.
//
#include "stdafx.h"
BOOL APIENTRY DllMain( HANDLE hModule,
                       DWORD  ul_reason_for_call,
                       LPVOID lpReserved
      )
{
    return TRUE;
}
Messo in automatico da VC. A questo punto ho fatto copia-incolla del
seguente spezzone
/* DLL di dimostrazione su come fare la somma di un array dichiarato
in Visual Basic e passato in Microsoft Visual C++ 4.0 */
extern "C" __declspec (dllexport) long __stdcall SommaArray(short
*Array,long Elementi)
{ 
long SommaParziale=0; 
long ElementoCorrente; 
 
for (ElementoCorrente=0;ElementoCorrente<Elementi;ElementoCorrente++) 
{ 
  SommaParziale+=Array[ElementoCorrente]; 
} 
return SommaParziale; 
} 
Perchè da bravo bambino avevo trovato un bell'articolo sull'argomento. Questa funzione infatti gira senza problemi!
Apro VB (6.0) dichiaro l'API
Private Declare Function SommaArray Lib "Test2.dll" Alias "_SommaArray@8" (ByRef PuntaArray As Integer, ByVal Elementi As Long) As Long
E tutto fila liscio come l'olio...
Ma...
Adesso arriva il turno di scrivere la MIA funzione :)
Eccola qua:
// Questa è la mia prova... :)
extern "C" __declspec (dllexport) char* __stdcall ReturnStringa(){
    return "PIPPO\0";
}// ReturnStringa
Dichiaro l'API 
Private Declare Function ReturnStringa Lib "Test2.dll" Alias "_ReturnStringa@0" () As String
Ma naturalmente non funziona. Va in GPF l'IDE di VB (Global Protection Fail - cioè si pianta tutto... :( )
Cos'è che non va??? Io ho assolutamente bisogno di fare un'API che mi ritorni una stringa per velocizzare tutti i miei progetti scritti in VB... Thanks
Ah... gli alias li ho ricavati con Dependency Walker e l'articolo l'
ho trovato qui:
http://www.it-lang-vb.net/Documentazione/Articoli/DllxVb.htm
Un grazie di cuore a chiunque mi aiuterà...
CiaoZ
SebaMix
--
Sebastiano Pallaro
--
Sito lavoro : 
http://www.infotrade.it
Sito personale : 
http://sebamix.supereva.it
Sito Comune del NG it.comp.lang.visual-basic : 
http://www.it-lang-vb.net
Per scrivermi : togliete ".ot" dall'indirizzo di posta elettronica
--

Ciao,
Questo newsgroup si occupa del linguaggio C++ in quanto tale, e non di
aspetti specifici di particolari implementazioni. Per questo non e' il
posto piu' adatto per porre domande specifiche come la tua.
Potresti avere piu' fortuna su uno dei seguenti gruppi:
Per Win32 (95, 98, NT): it.comp.programmare.win32
Per Dos/Win 3.x: it.comp.os.dos
Per Linux:      it.comp.os.linux.development
Per C++Builder: i gruppi borland.public.cppbuilder.*, disponibili sul
                server 
newsgroups.borland.com
 (prevalentemente in 
                inglese, ma si puo' postare anche in italiano)
Grazie,
Nicola Musatti

Forse non sono stato chiarissimo... mi chiedevo semplicemente cosa potesse
avere di sbagliato questa funzione... ora provo in uno dei gruppi che mi hai
passato
// Questa č la mia prova... :)
extern "C" __declspec (dllexport) char* __stdcall ReturnStringa(){
    return "PIPPO\0";
}// ReturnStringa
Grazie,
SebaMix

 wrote in message
news:9et6c0$untf$1...@ID-66833.news.dfncis.de...

Nulla in senso C. Ma il concetto di stringa del C e' diverso da quello del VB.
In C una stringa e' l'indirizzo di una sequenza di caratteri terminata da '\0'.
In VB e' una cosa completamente diversa.
Ma siamo OT. Chiedi in altri gruppi o cerca la documentazione di come passare
stringhe fra VB e C in MSDN.
--
Andrea Ferro
---------
Brainbench C++ Master. Scored higher than 97% of previous takers
Scores: Overall 4.46, Conceptual 5.0, Problem-Solving 5.0
More info 
http://www.brainbench.com/transcript.jsp?pid=2522556