今天我在MQL4
.
我有一个方法,我从 a 导入DLL
:
在MQL4:
void insertQuery( int id,
string tableName,
double &values[4],
long ×[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 )
所以我的问题是:为什么我long
在收到记录时会丢失数组中的一个值DLL
?
我尝试了很多方法来解决这个问题(我传输了两个和三个long
值等),并且总是得到一个结果,即我在序列化时丢失了第二个 long
值。为什么?