我有一个 dll 函数调用的问题。函数调用将结构作为参数,并且结构包含其他数据类型中的双精度。调用函数后,函数获取的结构中的双精度值与传递给函数之前的值完全不同,类似于 -2.343443e4535。
这是调用的一个片段,现在 dll 函数所做的只是打印结构中的双精度值(第二个参数)。
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's 。代码来自受限制的 API,这就是为什么我不能发布实际代码但结构完全相同的原因。
谢谢