"Yönetilmeyen dışa aktarmaları kullanarak C# kodunu MQL5'e gösterme" makalesi için tartışma - sayfa 5

 
Anladığım kadarıyla RGiesecke UnmanagedExportLibrary şablonu bazı yerlerde IL dosyalarını ayrıştırmak için // Code gibi yorumlar kullanıyor. Rusça konuşan Windows kullanıcıları oraya // Size gibi Rusça yorumlar ekliyor ve bu yüzden şablonu çalışmıyor. DLL'de hiçbir fonksiyon yok ve bu yüzden hata 127 atılıyor. Yazık, sadece bu şablon uğruna Windows arayüz dilini değiştirmek istemiyorum, oldukça iyi çalışıyor ve doğru görünüyor olsa da, en azından DLL'ler en azından boşaltılıyor. Microsoft aynı zamanda bir süpürge, C++'dan C#'a kolayca veri aktarabilirsiniz, ancak tam tersi büyük bir sorun.
 

64 win 8 kullanıyorum.

vs2013 ile derledim.

Ancak, yükleniyor, ancak çözülmemiş bir içe aktarma işlevi çağrısı var.

Bunu nasıl çözebilirim?

2014.03.05 20:39:59.220 UnmanagedExportsDLLExample1 (XAUUSD,H1) çözümlenmemiş içe aktarma işlevi çağrısı

2014.03.05 20:39:59.220 UnmanagedExportsDLLExample1 (XAUUSD,H1) 'Testme.dll' içinde 'Add' bulunamıyor

 

2011.10.29 20:13:37    2000.01.03 00:00  Expert_NN_1_1 USDJPY,H1: cannot call function 'sum' from dll 'NN 1 DLL.dll' (error 127)

Merhaba,

Benzer hatalar alıyorum. Bunu nasıl çözdünüz?...

2014.03.28 22:16:41.199 2014.03.25 23:59 çözümlenmemiş içe aktarma işlevi çağrısı

2014.03.28 22:16:41.199 2014.03.25 23:59 'Testme.dll' içinde 'Set2DArray' bulunamıyor

 
ANG3110:
Anladığım kadarıyla RGiesecke UnmanagedExportLibrary şablonu...

Bu mesaj yarım yıl önce bırakılmış. O zamandan beri bir şey değişti mi????

Автоматический трейдинг и тестирование торговых стратегий
Автоматический трейдинг и тестирование торговых стратегий
  • www.mql5.com
MQL5: язык торговых стратегий для MetaTrader 5, позволяет писать собственные торговые роботы, технические индикаторы, скрипты и библиотеки функций
 
ReplaceString işlevini çalıştırmayı başaran var mı? Bunun dışında tüm işlevler işini yapıyor, herhangi bir Fikri olan var mı?
 

Birinci yöntem:

64 win 7, vs2012 C# programım var. Sahibinin testme.zip şablon dosyasını indirdim.

Komut isteminin ortasında birkaç hata (yanlış yol, eksik dosyalar, vb. vb.) çözüldü.

Ancak sonunda, hala aynı sorun ortaya çıkıyor ve üst katta. Şimdi çözülüp çözülmediğini bilmiyorum? Çözmek için hangi yöntem.



İkinci yöntem:

NuGet RGiesecke paketini yükledi.

https://www.nuget.org/packages/UnmanagedExports/1.2.6

201311 tarihli en son sürüm şunları ister

Hata 2 C:\Users\Administrator\AppData\Local\Temp\tmp8B24\dllTest.il(58) : error : syntax error at token '{ ' içinde: {
dllTest



Unmanaged Exports (DllExport for .Net)
Unmanaged Exports (DllExport for .Net)
  • www.nuget.org
A set of compile-time libraries (nothing to deploy) and a build task that enable you to export functions from managed code to native applications. That means, you can create plugins in a managed language like C# or F# for native applications that only have a C-Api (like Notepad++). The nuget package is all you need. Just mark your methods with [DllExport] and build for x86, x64 or ia64. Hints: - You have to set your platform target to either x86, ia64 or x64. AnyCPU assemblies cannot export functions. - The export name defaults to the method name and the calling convention to stdcall. If that's all what you want, you can just use [DllExport] without parameters. - You cannot put your exports in generic types or export generic methods. (The CLR wouldn't know what type parameters to use)
[Silindi]  

IJW yardımıyla C++ striptizci kullanabilir ve ardından her şeyi yalnızca derleyici - bağlayıcı aracılığıyla tek bir DLL'de birleştirebilirsiniz, makalede açıklanan şablonla saptırmalar gerekli değildir, burada kısaca açıklanmıştır - http://stackoverflow.com/questions/26226958/include-managed-c-sharp-dll-into-unmanaged-c-dll-all-in-one-single-file.

Peki, ve RGiesecke şablonu ile açıklanan yöntem - bu bir hack ve er ya da geç çalışmayı durdurur, bu arada ben de çalışmadım ...

Ancak birisi hala makalede açıklanan IL yöntemiyle oynamak istiyorsa, bir bisiklet daha var, ancak o da çalışmıyor - https://github.com/winch/winch.pinkbile.com-c-sharp/tree/master/dll_tool/dll_tool.

Include managed C# DLL into unmanaged C++ DLL - all in one single file
Include managed C# DLL into unmanaged C++ DLL - all in one single file
  • stackoverflow.com
In comparison to the question above i need to combine DLLs so that final mixed DLL could export their functions to other unmanaged applications. For this i would like to compile them both as .netmodule and then combine them into one file with a linker so i have : 1) Libs - project with some library in C# - it does not have any dependencies...
 

Merhaba,

İçinde string değişkenleri olan bir yapıyı dll'e gönderebilen oldu mu?

İnt, double, float gönderebildim, ancak string değişkenler için bu hatayı alıyorum:

Access violation read to 0x0000007B

İşte benim C# yapım:

        [StructLayout(LayoutKind.Sequential, Pack = 1)]
        public struct accInfo
        {
            public string broker;
// public String sunucu;
            public int account;
// public String kullanıcı;

            public double balance;
            public Double credit;
// public String para birimi;
            public int leverage;
            public int stopout;
            public int stopoutmode;
            public float commission;
            public int lotsize;
            public float minlot;
            public float lotstep;
            public float maxlot;
            public float gmtOffset;

// public String çifti;
            public int digits;
            public int point;
            public int tradeAllowed;
            public int swaptype;
            public float swapbuy;
            public float swapsell;
            public int stoplevel;
        };

Ve burada mql4 yapısı:

   struct accInfo
   {
      string   broker;
// string sunucu;
      int      account;
// string kullanıcı;
      
      double   balance;
      double   credit;
// string para birimi;
      int      leverage;
      int      stopout;
      int      stopoutmode;
      float    commission;
      int      lotsize;
      float    minlot;
      float    lotstep;
      float    maxlot;
      float    gmtOffset;
      
// dize çifti;
      int      digits;
      int      point;
      int      tradeAllowed;
      int      swaptype;
      float    swapbuy;
      float    swapsell;
      int      stoplevel;
   };

Yapının içindeki string değişkenini marshal etmeye çalıştım ama MT4 tamamen çöküyor, hata yok sadece kilitleniyor ve pencerelerde eziliyor.

       [StructLayout(LayoutKind.Sequential, Pack = 1)]
        public struct accInfo
        {
            [MarshalAs(UnmanagedType.LPWStr)]
            public string broker;
...

Teşekkür ederim.

Discussion of article "Exposing C# code to MQL5 using unmanaged exports"
Discussion of article "Exposing C# code to MQL5 using unmanaged exports"
  • www.mql5.com
I also provided several examples on how to marshal MQL5 structures against C# and how to invoke exported DLL functions in MQL5 scripts. - Page 2 - Category: articles, library comments
 
Renat Fatkhullin:

Evet, bir süre sonra DLL kullanımı hakkında yeni bir makale yazacağız. Oraya pek çok ilginç şey eklendi.

Bu arada, tartışılan makaledeki örnekleri kullanabilirsiniz. Orada karmaşık bir şey yok.

Ve ... Ne kadar bekleyeceğiz? Bir yıl mı, iki yıl mı. yoksa 10 mu?

Zaten 3 yıl oldu. En başta bahsedilen makaleye göre dll' den metot almak mümkün değil. Örnekler nerede?

 

Bu makale için çok teşekkür ederim. C# için bu açık kaynaklı MQL kütüphanesini oluşturmak için buradaki fikirleri kullandım.

https://github.com/jseparovic/MQL4CSharp

Hala geliştirilme aşamasında ve şu anda test edilmedi, ancak ilk testler fikrin işe yaradığını gösteriyor.

C# kodunun çalışması için bir Thread ve iletişim için getters/setters kullanarak C#'tan komutları nasıl gönderdiği çok basittir. MQL her milisaniyede bir bekleyen komutları sorgularken, C# kodu sonuç yazılana kadar bloke edebilir.

C#'ta bir stratejinin nasıl uygulanacağına dair bir örnek için https://github.com/jseparovic/MQL4CSharp/blob/master/MQL4CSharp/UserDefined/Strategy/MaCrossStrategy.cs adresine bir göz atın.

Şerefe,

Jason