gpt4 book ai didi

c++ - 如何修复序列化问题 MQL4?

转载 作者:行者123 更新时间:2023-11-30 03:40:31 25 4
gpt4 key购买 nike

今天我在 MQL4 中遇到序列化问题。

我有一个方法,我从 DLL 导入:

MQL4 中:

void insertQuery( int     id,
string tableName,
double &values[4],
long &times[3],
int volume
);

DLL:

__declspec(dllexport) void __stdcall insertQuery( int      id,
wchar_t *tableName,
double *values,
long *times,
int volume
);

我在 MQL4:

中用这个函数调用测试了它
string a      = "bla";
double arr[4] = { 1.1, 1.3, 0.2, 0.9 };
long A[3] = { 19991208, 19991308, 19992208 };
int volume = 1;
insertQuery( idDB, a, arr, A, volume );

在这个方法中,我将这个值收集到文件中。

C++:

stringstream stream;
stream << " '";
for (int i = 0; i < 2; ++i) {
stream << times[i] << "' , '";
}
stream << times[2] << ", ";

for (int i = 0; i < 4; ++i) {
stream << values[i] << ", ";
}

stream << volume;
wstring table(tableName);
query.append("INSERT INTO ");
query.append(table.begin(), table.end());
query.append(" VALUES (");
query.append(stream.str());
query.append(" )");

std::ofstream out("C:\\Users\\alex\\Desktop\\text.txt");
out << query;
out.close();

但是在输出文件中我收到了这条记录:

INSERT INTO bla VALUES ( '19991208' , '0' , '19991308, 1.1, 1.3, 0.2, 0.9, 1 )

所以我的问题是:当我在 DLL 中收到记录时,为什么我在数组中丢失了一个 long 值>?

我尝试了很多方法来解决这个问题(我传输了两个和三个 long 值等)并且总是我得到的结果是我输了序列化时的第二个 long 值。 为什么?

最佳答案

问题的起因是因为在 MQL4 中,一个 long 是 8 个字节,而在 C++ 中一个 long 是一个 4 个字节。

  1. 您需要的是 C++ 构造函数中的 long long
  2. 或者您也可以将它们作为字符串传递,然后在您的 C++ 代码中将它们转换为适当的类型。

关于c++ - 如何修复序列化问题 MQL4?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37967738/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com