ho un exe che utilizza una dll:
//metodo, sempre static, che utilizza la dll (Client.cpp)
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;
}
e comando è così dichiarato nel file Client.h:
codice:
struct comando
{
string cmd;
string p1;
string p2;
string pNum;
string pAgg;
};
Invece questa è la dll
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
}
da notare che la struttura cmd che avevo passato era così composta:
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