У меня есть C # dll, которая вызывается из неуправляемого кода (MT4-терминал) через DLLExport RGiesecke. Я могу вызывать в C # dll и передавать значения параметров без проблем.
Теперь у меня есть задача передать объект, созданный в C # DLL (он происходит из WCF-Service), в неуправляемый код, изменить там некоторые элементы и передать изменения обратно в WCF-клиент. К сожалению, я могу звонить только из неуправляемого в управляемый код Поэтому я подумал, что просто передаю объект по ссылке ..... но не могу заставить его работать.
Вот что у меня есть:
Управляемая сторона:
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct S1
{
public int Period;
public int Seconds;
}
и
[DllExport(CallingConvention = CallingConvention.StdCall)]
public static void f( ref S1 s1 )
{
s1 = new S1(); // ... in real program comes from WCF-Service
}
На неуправляемой стороне (MQL-код)
struct S1
{
int Period;
int Seconds;
}
и
#import "theDLL.dll"
void f( S1& s1 );
#import
Я хотел бы написать
... s1;
f( s1 );
s1.seconds = 42;
с тем эффектом, что я могу получить доступ к измененному значению 'секунд' в моей управляемой DLL (чтобы передать его обратно в WCF-клиент).
К сожалению, я не представляю, как объявить s1 в моем MQL-коде или как-то изменить весь материал, чтобы он заработал.
Спасибо за помощь.