Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > events через IKVM


Автор: CompWorm 20.10.2015, 21:35
Добра!

Пытаюсь заюзать некий SDK в форме DLL, написанный на C# в своём Java проекте, используя IKVM.
моё приложение благополучно использует классы из данного сдк, сейчас проблема - как подписаться на события.
сразу уточняю, доступа к коду SDK нет, событие там вероятно в таком виде:
Код

public event EventHandler<LogonFailedEventArgs> LogonFailed;

и используется в примерах примерно так:
Код

Engine m_engine = new Engine();
m_engine.LogonFailed += OnLogonFailed;
...
private void OnLogonFailed(object sender, LogonFailedEventArgs e)
{
...
}

из меиллиста (http://sourceforge.net/p/ikvm/wiki/Using_.NET_with_Java/) в Java это предлагается использовать примерно так (к сожелению документация молчит и вообще в плачевном состоянии)
Код

mSdkEngine.add_LogonFailed(
new cli.System.EventHandler(new cli.System.EventHandler.Method()
{
    public void Invoke(Object sender, cli.System.EventArgs e)
    {
        //this.somecallback(sender, e);
    }
}));

но в сгенерированном стабе (от ikvmstub) SDK классы, связанные с эвентом имеют name mangling, что делает их некомпилябельными:
Код

public final native void add_LogonFailed(EventHandler..00601_..._Lcli__Sdk__LogonFailedEventArgs_...._ param_);

компилятор java ругается, что cli.System.EventHandler не EventHandler..00601_..._Lcli__Sdk__LogonFailedEventArgs_...._ param_
у остальных классов таких проблем нет, менглинг только в эвентах.
класс LogonFailedEventArgs в стабе тоже присутствует.
может надо натравить ikvm прекомпиллер сперва?
что не так сделал, кто эвенты юзал?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)