"Yönetilmeyen dışa aktarmaları kullanarak C# kodunu MQL5'e gösterme" makalesi için tartışma - sayfa 6
Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
Teşekkürler, faydalı makale!!! Saygılar!
MT'den C#'a string nasıl geçirilir, makalede böyle bir şey bulamadım. Lütfen açıklayın.
Teşekkürler, faydalı makale!!! Saygılar!
MT'den C#'a string nasıl geçirilir, makalede böyle bir şey bulamadım. Lütfen açıklayın.
Yönetilmeyen dışa aktarımları kullanarak C# kodunu MQL5'e maruz bırakma başlıklı yeni makale yayınlandı:
Yazar: investeo
Merhaba investeo, harika bir makale!
C# DLL'i mql5 koduna nasıl bağlayacağımı araştırırken bu makaleyi buldum... ve bu bana çok yardımcı oldu! Teşekkürler.
Şimdi, üçüncü taraf bir sunucu ile WebSocket bağlantısı çalıştıran bir DLL'den veri almam ve sunucudan gelen canlı verileri MQL5'e göndermem gerekiyor, ancak MQL5 ile bir DLL veya API arasında gerçek zamanlı ve 2 yönlü iletişimin uygulanmasına dair herhangi bir örnek bulamadım.
Bana yardım edebilir misiniz?
Hata 2 C:\Users\Administrator\AppData\Local\Temp\tmp8B24\dllTest.il(58) : error : syntax error at token '{ ' içinde: { dllTest
Bu hata Çince sistemlerde meydana gelir çünkü UnmanageExports IL dosyasını oluştururken bazı yorumlar Çince olarak oluşturulduğu için düzgün çalışmaz. Bu sorun Japonca ve İngilizce işletim sistemlerinde oluşmaz, bir çözüm var, işletim sisteminizi İngilizce olana değiştirebilirsiniz.
Ama bu çok fazla sorun olur, değil mi, burada düzeltmek için küçük tilki şeyini çıkarmanız gerekiyor!
Little Fox tarafından sağlanan Yönetilmeyen İhracat düzeltmesini aşağıdaki adresten indirin
https://www.noisyfox.cn/397.html
http://www.magecorn.com/p/280.shtml .
Daha fazla ayrıntı için lütfen yukarıdaki iki makaleyi okuyun
Yukarıdaki kodun sahibi nasıl çalıştıramadı?
2017.04.28 23:48:08.774 'Testme.dll' içinde 'Add' bulunamıyor
Editör gezgininde "Tüm dosya türlerini göster" seçeneğini açın, DLL'nizi bir fare ile tutun ve programın MQL5 penceresine atın.
Muhtemelen sonuç sizi şaşırtacaktır.
İyi günler. 2018....
Net'te yazılmış dışa aktarılan işlevleri çağırma örneklerini nerede görebileceğimi söyleyebilir misiniz?
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, yine de çalışmayan başka bir bisiklet var - https://github.com/winch/winch.pinkbile.com-c-sharp/tree/master/dll_tool/dll_tool.
İyi günler. Tek bir dosyada c++/c++CLI/c# oluşturmak için adım adım bir test örneği yazabilir misiniz? Makalenin yazarı ile aynı basit örnekler.
Lütfen C# ile yazılmış bir fonksiyona mt4(veya mt5)'ten erişmek için basit bir örnek verin ........... Sharp ile bir fonksiyona a ve b değerlerini geçirip sonucu mt4(mt5)'e döndürmek
makalede https://www.mql5.com/tr/articles/249 yazarın derlenmiş dll'i mt4 ve mt5'te doğru çalışıyor!
ancak yazarın kaynaklarından kendi derlenmiş dll'imi oluşturmaya çalıştığımda (VisualStudio 2010'da) bu dll çalışmıyor (127 hatası yazıyor)
tüm .NET sürümleri yüklü.
// код C#
using System;
using System.Text;
using RGiesecke.DllExport;
using System.Runtime.InteropServices;
namespace TEST
{
class TEST
{
[DllExport("Add", CallingConvention = CallingConvention.StdCall)]
public static int Add(int left, int right)
{
return left + right;
}
}
}
namespace RGiesecke.DllExport
{
[AttributeUsage(AttributeTargets.Method, AllowMultiple = false)]
partial class DllExportAttribute : Attribute
{
public DllExportAttribute()
{
}
public DllExportAttribute(string exportName)
: this(exportName, CallingConvention.StdCall)
{
}
public DllExportAttribute(string exportName, CallingConvention callingConvention)
{
ExportName = exportName;
CallingConvention = callingConvention;
}
public CallingConvention CallingConvention { get; set; }
public string ExportName { get; set; }
}
}
// код МТ4
//+------------------------------------------------------------------+
#import "TEST.dll"
int Add(int a,int b);
#import
void start()
{
Comment(Add(3,2));
}
//+------------------------------------------------------------------+
Üç gün ve üç geceyi Google'da araştırarak ve deneyerek geçirdim, genel olarak örnek VS2017'de çalışıyor, MT4 altında .dll'i derleyip çalıştırmayı başardım, ancak ..... Win10 altında Rusça olarak çalıştıramadım.
Aşağıdakileri yaptım: Win7 - 64 ile sanal bir makine kurdum, ancak İngilizce, VS2017'nin İngilizce sürümünü yükledim, yalnızca C# paketini yükledim, şablonu RGiesecke 'den VS2017 şablon larının bulunduğu klasöre kopyaladım. Projeyi derlerken, platformu kontrol etmeyi unutmayın - mutlaka x86 (MT4 için) . İlk derleme sırasında RGiesecke ad alanı yok hatası aldım ,projeden UnmanagedExportspaketini yükledim. Her şey 1 hata ile derlendi - ildasm.exe bulunamadı, ancak .dll MT4 altında sorunsuz çalışıyor.
Sorun muhtemelen RGiesecke'nin şablonunda, Win'in İngilizce sürümünde, VS2017'nin İngilizce sürümünde doğru çalışıyor ve VS2017'deki tüm yollar varsayılan olarak ayarlanmalıdır.
işte nasıl çalıştığı ;)
Bu yaklaşım .NET sürüm 5 için çalışıyor mu?
Test etmedim ama işe yarayacağından şüpheliyim
MT4'ün C# ile etkileşime girmesi çok zordur - her zaman bazı tuzaklar vardır.
MT5'e geçmek daha kolay.
ancak MT4'ü prensip olarak kullanmak istiyorsanız, bir seçenek olarak - makaledeki metodolojiye göre C#'ta .dll dosyasını başlatın ve içinde herhangi bir C# kodunu ayrı bir iş parçacığında başlatın ve değişimi düzenleyin, 64 bit C# kütüphanelerini bu şekilde başlattım