gpt4 book ai didi

无法使用 MQL5 在 DLL 中找到函数

转载 作者:太空宇宙 更新时间:2023-11-04 04:17:56 25 4
gpt4 key购买 nike

我正在尝试从 #import 调用函数 Train()动态链接库。

函数就在那里,在 DLL 文件中,我已经确认它是通过 DLL 查看器导出的。

我已经尝试使用 MQL5 中的以下代码来调用 DLL 函数:

#import "NNModel.dll"
string Train(
double &inpTrain[], // Input training data (1D array carrying 2D data, old first)
double &outTarget[],// Output target data for training (2D data as 1D array, oldest 1st)
double &outTrain[], // Output 1D array to hold net outputs from training
int ntr, // # of training sets
int UEW, // Use Ext. Weights for initialization (1=use extInitWt, 0=use rnd)
double &extInitWt[],// Input 1D array to hold 3D array of external initial weights
double &trainedWt[],// Output 1D array to hold 3D array of trained weights
int numLayers, // # of layers including input, hidden and output
int &lSz[], // # of neurons in layers. lSz[0] is # of net inputs
int AFT, // Type of neuron activation function (0:sigm, 1:tanh, 2:x/(1+x))
int OAF, // 1 enables activation function for output layer; 0 disables
int nep, // Max # of training epochs
double maxMSE // Max MSE; training stops once maxMSE is reached
);

string Test(
double &inpTest[], // Input test data (2D data as 1D array, oldest first)
double &outTest[], // Output 1D array to hold net outputs from training (oldest first)
int ntt, // # of test sets
double &extInitWt[],// Input 1D array to hold 3D array of external initial weights
int numLayers, // # of layers including input, hidden and output
int &lSz[], // # of neurons in layers. lSz[0] is # of net inputs
int AFT, // Type of neuron activation function (0:sigm, 1:tanh, 2:x/(1+x))
int OAF // 1 enables activation function for output layer; 0 disables
);
#import

C 文件中,我将函数声明为:

MT5_EXPFUNC char* __stdcall Train(
const double* inpTrain, // Input training data (2D data as 1D array, oldest first)
const double* outTarget,// Output target data for training (2D data as 1D array, oldest first)
double* outTrain, // Output 1D array to hold net outputs from training
const int ntr, // # of training sets
const int UEW, // Use External Weights for initialization (1=use extInitWt, 0=use rnd)
const double* extInitWt,// Input 1D array to hold 3D array of external initial weights
double* trainedWt,// Output 1D array to hold 3D array of trained weights
const int numLayers,// # of net layers including input, hidden and output
const int* lSz, // # of neurons in layers. lSz[0] is # of net inputs (nin)
const int AFT, // Type of neuron activation function (0:sigm, 1:tanh, 2:x/(1+x))
const int OAF, // 1 enables activation function for output layer neurons; 0 disables
const int nep, // Max # of training epochs
const double maxMSE // Max MSE; training stops once maxMSE is reached
)

MT5_EXPFUNC char* __stdcall Test(
const double* inpTest, // Input test data (2D data as 1D array, oldest first)
double* outTest, // Net outputs from testing
const int ntt, // # of test sets
const double* extInitWt,// Input 1D array to hold 3D array of external initial weights
const int numLayers,// # of net layers including input, hidden and output
const int* lSz, // # of neurons in layers. lSz[0] is # of net inputs (nin)
const int AFT, // Type of neuron activation function (0:sigm, 1:tanh, 2:x/(1+x))
const int OAF // 1 enables activation function for output layer neurons; 0 disables
)

调用指标后出现以下错误:

Cannot find 'Train' in 'NNModel.dll'
unresolved import function call

我检查了查看器,DLL 中有名为 Train 的函数可用。

看图:
enter image description here

这是 DLL:NNModel.dll

最佳答案

新手可能会惊讶于 string 在 MQL4/5 中不是 string

这就是说,the documentation is clear in this由于 New-MQL4.56789 的早期设计问题多年前就开始了,补救措施应从调用接口(interface)验证开始。

对暂时有效的实际脏数据进行逆向工程搜索 #pragma -装饰struct{} - 布局是可能的,但在生产级软件工程中永远存在风险且效率非常低......


最佳下一步——保持C端最佳实践的安全:

设计一个简单的界面——像一样简单int aDllCallInterfaceVALIDATOR( <params, ...> ); 这样就没有任何项目适用于 MQL4/5 端 string -s.

一旦您的调用接口(interface)代码集成适用于您的 DLL 端意图的所有参数,并且还可以将合理的数据/结果返回到 MQL4/5 代码的手中,返回到预期的功能。

简单意味着聪明。

( 有很多头发被撕掉一次 string -s 在技术上开始是 struct{} -s 在 New-MQL4.56789 中仍然蠕动着重新的岩浆-工程。所以如果没有必要,就不必重复这样的痛苦,是吗?
:o) )

关于无法使用 MQL5 在 DLL 中找到函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49706740/

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