PDA

View Full Version : Misteri della programmazione??


okay
21-02-2006, 16:38
ho fatto una dll activex in vb6 che è richiamata da codice c++ (in pratica il contrario di quello che si trova su google [ho i miei motivi per fare questo]).

Ho fatto una applicazione console win32 con vc6 questo è il codice:


#include <stdio.h>

#import "progetto1.dll" no_namespace

void main()
{
BSTR bstrDesc;

try
{
CoInitialize(NULL);
long st = 2;
long ts = 3;
long st1;

_Class1Ptr ptr;

ptr.CreateInstance(__uuidof(Class1));
st1 = ptr->MyVBFunction(&st);
st1 = ptr->AddTest1(&st, &ts);
MessageBoxW(NULL, L"OKAY", L"Messaggio",MB_OK);
}
catch(_com_error &e)
{
bstrDesc = e.Description();
MessageBoxW(NULL, L"ERRORE", L"Messaggio",MB_OK);
}
CoUninitialize();
}


tutto funziona perfettamente infatti la dll vb esegue una msgbox con scritto 2 alla prima chiamata della funzione, alla seconda chiamata della seconda funziona esegue 3+2+128 infatti st1 è = a 133


Il problema è il seguente:

ho fatto un'altra applicazione console win32 ma con Visual Studio NET 2003 ho copiato lo stesso codice e messo nella dir la dll vb6 la compilazione e il link è uguale ma all'avvio alla prima chiamata della funzione il flusso và nel try, ho tolto il try è ho un errore nel file comip.h

se lancio l'exe su win98 dove ho il tool vc6 funziona perfettamente.
se porto l'exe oppure compilo come detto sopra su xp tutto passa nel try{...}

... misteri della programmazione??

se volete potete provare il tutto quì potete scaricare la dll e la lib:
http://www.twork.it/work/Dllvb6.zip