MQL側はstringで渡す。
// DLLをインポートする.
#import "libConvCharSet.dll"
// DLLで作成した関数を定義する.
int LoadNetwork(string);
#import
DLL側はLPTSTRで受け取り、マルチバイト文字列をstringに変換する。
extern "C"
MT4_EXPFUNC int __stdcall LoadNetwork(LPTSTR file_name)
{
string str = WideCharsToString(file_name);
net.load(str);
int nNetSize = net.layer_size();
return nNetSize;
}
マルチバイト文字列をstringに変換するには以下の関数を作成する。
std::string WideCharsToString(LPCTSTR src)
{
std::string str;
#ifdef UNICODE
int bufSize = WideCharToMultiByte(CP_ACP, 0, src, -1, NULL, NULL, NULL, NULL);
char* buf = new char[bufSize];
if (WideCharToMultiByte(CP_ACP, 0, src, -1, buf, bufSize, NULL, NULL) == 0) return NULL;
str = buf;
delete[] buf;
#else
str = src;
#endif
return str;
}