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.
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)
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...
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
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.
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
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????
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
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.
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:
Ve burada mql4 yapısı:
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.
Teşekkür ederim.
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