Подскажите как написать DLL на C# ? постоянно выдает ошибку 127

 

Большая просьба привести простейший пример функции написанной на С# для обращения к ней с мт4 ........... Передать значения а и б в функцию с шарп и вернуть результат в мт4

в статье https://www.mql5.com/ru/articles/249 компилированная dll автора работает и в мт4 и в мт5 исправно!

но когда я пытаюсь создать свою компилированную DLL с исходников автора (в VisualStudio 2010) то у меня эта dll не работает(пишет ошибка 127)

все версии .NET установлены

// код 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));
}
//+------------------------------------------------------------------+

В чем ошибка?

 
???
 


кто знает куда и как вставляются шаблоны в с шарпе, причина видимо только в этом

и как шаблон задействовать

<VSTemplate Version="3.0.0" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005" Type="Project">
<TemplateData>
<Name>Testme</Name>
<Description>&lt;No description available&gt;</Description>
<ProjectType>CSharp</ProjectType>
<ProjectSubType>
</ProjectSubType>
<SortOrder>1000</SortOrder>
<CreateNewFolder>true</CreateNewFolder>
<DefaultName>Testme</DefaultName>
<ProvideDefaultName>true</ProvideDefaultName>
<LocationField>Enabled</LocationField>
<EnableLocationBrowseButton>true</EnableLocationBrowseButton>
<Icon>__TemplateIcon.ico</Icon>
</TemplateData>
<TemplateContent>
<Project TargetFileName="Testme.csproj" File="Testme.csproj" ReplaceParameters="true">
<Folder Name="DllExport" TargetFolderName="DllExport">
<ProjectItem ReplaceParameters="true" TargetFileName="DllExportAttribute.cs">DllExportAttribute.cs</ProjectItem>
</Folder>
<Folder Name="Properties" TargetFolderName="Properties">
<ProjectItem ReplaceParameters="true" TargetFileName="AssemblyInfo.cs">AssemblyInfo.cs</ProjectItem>
</Folder>
<ProjectItem ReplaceParameters="true" TargetFileName="UnmanagedExports.cs">UnmanagedExports.cs</ProjectItem>
</Project>
</TemplateContent>
</VSTemplate>

 

нашел решение подробно описанное http://habrahabr.ru/post/137300/

пишем классик с нужными функциями. далее его вскрываем и подправляем код IL. и опять компилируем.

полученная длл должна по идее работать но увы

опять выдает ошибку 127.

 

Количество ответов от других участников по теме показывает насколько распространен C# среди них.

Походу вы единственный, кто им занимается на форуме.

Назначаем вас C# гуру форума :)


PS.

На 127 ошибку обычно в проекте С++ не хватает def файла.
Если в C# есть такой похожий файл, то найдите и добавьте в него список функций. по аналогии.

 
panelektrik:


кто знает куда и как вставляются шаблоны в с шарпе, причина видимо только в этом

и как шаблон задействовать



разобрался в шаблонах, шаблон необходимо вставить в папку C:\Documents and Settings\Admin\Мои документы\Visual Studio 2010\Templates\ProjectTemplates, после этого при создании нового проекта появляется возможность его прменения. но увы многочисленные попытки не дали результата. всегда компилированная длл выдает ошибку 127
 
sergeev:


Количество ответов от других участников по теме показывает насколько распространен C# среди них.

Походу вы единственный, кто им занимается на форуме.

Назначаем вас C# гуру форума :)


PS.

На 127 ошибку обычно в проекте С++ не хватает def файла.
Если в C# есть такой похожий файл, то найдите и добавьте в него список функций. по аналогии.



спасибо за ответ. думаю эта тема полезна программистам! просто те программисты которые используют еще и C# редко заходят на форум

кстати язык с шарп очень схож с mql, если решить проблему связки длл с мт4(простая и подробная инструкция) то думаю многие смогут зашивать свои алгоритмы в dll на с шарпе.

 
Да напишите вы эту сумму на С++.
Быстрее результат будет.
 
panelektrik:



спасибо за ответ. думаю эта тема полезна программистам! просто те программисты которые используют еще и C# редко заходят на форум

похоже таковых - только вы и еще MetaDriver.

кстати язык с шарп очень схож с mql, если решить проблему связки длл с мт4(простая и подробная инструкция) то думаю многие смогут зашивать свои алгоритмы в dll на с шарпе.


неверной дорогой идете товарищи. Добрый совет - учить С++.

так как вы вскоре перейдете на MQL5, а он родимый не на С#, а на C++ идет.

Не теряйте время.

 
sergeev:

похоже таковых - только вы и еще MetaDriver.


неверной дорогой идете товарищи. Добрый совет - учить С++.

так как вы вскоре перейдете на MQL5, а он родимый не на С#, а на C++ идет.

Не теряйте время.


Шарп нынче в моде.

Друг кури http://pitforex.com/index.php?topic=916.0 тут все пошагово расписано, а хабровский и у меня 127 показывает

 
m4rkus:

Шарп нынче в моде.

Друг кури http://pitforex.com/index.php?topic=916.0 тут все пошагово расписано, а хабровский и у меня 127 показывает


спасибо!!! изучаю...