ho un exe che utilizza una dll:
//metodo, sempre static, che utilizza la dll (Client.cpp)
e comando è così dichiarato nel file Client.h:codice:int Client::CallDllFunc(comando cmd) { HMODULE hmodule=::LoadLibrary("dll12.dll"); if(hmodule) { Command_Dll foo = (Command_Dll) GetProcAddress(hmodule,"foo"); foo(cmd); FreeLibrary(hmodule); } return 0; }
codice:struct comando { string cmd; string p1; string p2; string pNum; string pAgg; };
Invece questa è la dll
da notare che la struttura cmd che avevo passato era così composta:codice:#include <Windows.h> #include <string> using namespace std; //forse devo scrivere _declspec(dllexport)?? o mettere le parentesi graffe dopo extern "C" ossia /* extern "C" { struct comando{ string cmd; string p1; string p2; string pNum; string pAgg; }; } */ extern "C" struct comando{ string cmd; string p1; string p2; string pNum; string pAgg; }; extern "C" _declspec(dllexport) void foo(comando cmd) { Sleep(200); //breakpoint i valori di cmd si trovano qui http://img638.imageshack.us/i/debug1.jpg/ //blabla }
cmd.cmd = "Prova"
cmd.p1 = ":("
cmd.p2 = ""
cmd.pNum = ""
cmd.pAgg = "Provaa"
cosa può essere successo???? adesso mi sto rompendo di queste stringhe..e tra poco riscrivo la struttura di string in una bella stringa char * con dentro tutto quanto...ma mi rompe anche fare questo e che mi compaiano errori simili! -.-"
//nota uso "multy byte characters set" ossia no UNICODE

Rispondi quotando