-
SzerzőBejegyzés
-
Sziasztok!
Szeretnék saját DLL-t behívni a programjaimba, de nem akarja elfogadni a MetaTrader.Hibaüzenet az expert ablakban:
2016.03.03 13:24:20.605 dlltest EURUSD,M1: uninit reason 0 2016.03.03 13:24:20.605 dlltest EURUSD,M1: unresolved import function call 2016.03.03 13:24:20.605 Cannot call 'dlltest.dll::sum', 'dlltest.dll' is not loaded
A dlltest.cpp tartalma:
#define MT4_EXPFUNC __declspec(dllexport) MT4_EXPFUNC int __stdcall sum(int a, int b){ return (a+b); }
A MetaTrader script tartalma:
#import "dlltest.dll" int sum(int a, int b); #import void start(){ Alert(sum(1,2)); }
Nem használok rendes IDE-t, g++ al fordítok konzolból a következőképp:
g++ -c dlltest.cpp g++ -shared -o dlltest.dll dlltest.o
A DLL-t eztán a MetaTrader saját könyvtárába, az …\AppData\Roaming\…\MQL\Libraries mappába rakom. A platform x64 Windows 10, GCC 4.6.4 .
Mit rontok el/hagyok ki?Köszönöm!
Visual Studio-val (Visual C++) egyébként működik, de nem tudom mit varázsol a háttérben, így nem tudom kiadni a megfelelő parancsot a compilernek. Mindenesetre Visual Studioval így csinálsz MetaTrader által is ehető DLL-t:
(nem működő link)
Sajnos ezzel kapcsolatban nem vagyok kompetens, mert nem foglalkozom DLL programozással; mindig külsőst bízok meg vele, aki kellően profi. Így nem tudok neked a kérdésben segíteni.
Hali,
Én Visual Studio-t használok, de ott meg kell mondani a dll-nek, hogy mely függvények legyenek kintről láthatók, hívhatók. Addig se ki, se be a dll-be…
Készítettél definíciós fájlt (dlltest.def)?
Üdv,
ZoliVisual Studio-val nekem is rendesen működik, a fenti linken pontos leírás van hozzá. Kell hozzá a def file, igen. A kérdés az lett volna, hogy G++ al konzolból hogyan fordítok; gondolom egy parancs lenne hozzácsapni a def-et, de valahogy sehogy nem akart működni.
Bár kicsit zavar, de el tudom fogadni: amikor DLL-re van szükségem (azóta nem is kellett) én is Visual Studio-t használok.
-
SzerzőBejegyzés
- Be kell jelentkezni a hozzászóláshoz.