У меня проблема с вызовом функции dll. Вызов функции принимает параметр struct как параметр, и структура содержит двойной среди других типов данных. После вызова функции значение double в структуре, которую получает функция, полностью отличается от того, что было до перехода к функции, что-то вроде -2.343443e4535.DLL-функция получает неправильное значение из параметра
вот фрагмент вызова, все функции dll на данный момент просто распечатывают значение double в структуре (второй параметр).
TRD_ADD myFunc= (ADD) GetProcAddress(hinstLib,"MyFunc");
Mystruct * trd = new Mystruct(1,11.1,0,0,0,0,134000);
(myFunc) (trd);
Вот структура и функция
#pragma pack(1)
struct MyStruct
{
int orderNum;
int id;
char symbol[12];
int cmd;
char comment[32];
int internal_id;
int activation;
int count;
double rate;
time_t timestamp;
int reserved[4];
double price;
Mystruct(_orderNum,_rate,_timestamp,_activation,_cmd,_id,_price):orderNum(_orderNum),rate(_rate),timestamp(_timestamp),activation(_activation),cmd(_cmd),id(_id),price(_price){}
};
#pragma (pop)
void APIENTRY MyFunc(MyStruct *myStruct)
{
std::cout << myStruct->rate;
};
Я забыл включить эти # Pragma-ые годы. Код из ограниченного API, поэтому я не могу опубликовать фактический код, но это точно такая же структура.
Благодаря
Можем ли мы увидеть вашу реализацию структуры и тот, который использует dll. Это может быть расстройство заполнения данных. – Jiwan
Можете ли вы показать нам определение Mystruct и код для MyFunc. Никто не может помочь вам отлаживать код, который они не видят. – shf301
Thats все функции на данный момент. – Krazibit312