DLLファイルの作成
ライブラリ名 DLLTest01
公開関数名 GetSub, GetAdd, GetAvg
- プロジェクトを作成
プロジェクトの新規作成で「Windows デスクトップ 」→「 ダイナミック リンク ライブラリ(DLL)」
名前の入力:DLLTest01
場所の入力 → OK - モジュール定義ファイルを追加
ソリューション エクスプローラーのプロジェクトで「追加」→「新しいい項目」→「Visual C++」→「コード」→「モジュール定義ファイル(.def)」
名前の入力 : DLLTest01 →「追加」をクリック
作成したDLLTest01.defファイルを変更するLIBRARY DLLTest01 EXPORTS GetSub GetAdd GetAvg LIBRARYにライブラリ名、EXPORTSに公開関数名を記入する
- DLLTest01.cppファイルに以下の関数を追加する
double __stdcall GetSub(double A, double B) { return A - B; } double __stdcall GetAdd(double A, double B) { return A + B; } double __stdcall GetAvg(double A, double B) { return (A + B) / 2; }
- Releaseバージョンでビルドする
テスト コンソールアプリケーション
- Windows コンソール アプリケーションを作成する
- 作成したDLLTest01.dll と DLLTest01.libファイルをプロジェクトフォルダにコピーする(.vcprojが作成されたフォルダ)
- プロジェクトのプロパティページ →「リンカー」→「入力」→「追加の依存ファイル」→「編集」→DLLTest01.lib を入力
- アプリケーションの.cppファイルの#includeの行の後ろに以下を入力する
#include "pch.h" #include <iostream> double __stdcall GetSub(double A, double B); double __stdcall GetAdd(double A, double B); double __stdcall GetAvg(double A, double B);
- アプリケーションの.cppファイルに以下を入力
int main() { printf("これは減算です %.0lf\n", GetSub(10, 20)); printf("これは加算です %.0lf\n", GetAdd(10, 20)); printf("これは平均です %.0lf\n", GetAvg(10, 20)); }
- F5 実行でテストする
MQLでの使用例
- 「ファイル」→「データフォルダを開く」
- 開いたエクスプローラの「MQL4\Libraries」内いに作成したDLLTest01.dllをコピーする
- 新規エキスパートアドバイザーを作成する
- #propertyの後ろに以下のコードを入力する
#property copyright "Copyright 2018, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" #property strict #import "DLLTest01.dll" double GetAdd(double, double); double GetSub(double, double); double GetAvg(double, double); #import
- OnInit()に次のコードを入力する
int OnInit() { //--- printf("これは加算です %.0lf", GetAdd(10, 2)); printf("これは減算です %.0lf", GetSub(10, 2)); printf("これは平均です %.0lf", GetAvg(10, 2)); //--- return(INIT_SUCCEEDED); }
- F5 実行する