我正在尝试Train()
从#import
-ed DLL 调用该函数。
该函数在 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
。
这是 DLL: NNModel.dll