繁体   English   中英

从Java访问.net DLL

[英]Access .net DLL from Java

我是java和DLL-s的新手

我需要从java访问DLL的方法。 所以对我很轻松。

我尝试过使用JNA来访问DLL,这就是我所做的。

import com.sun.jna.Library;

public class mapper {

  public interface mtApi extends Library {
        public boolean IsStopped();
  }

  public static void main(String []args){
     mtApi lib = (mtApi) Native.loadLibrary("MtApi", mtApi.class);
     boolean test = lib.IsStopped();
     System.out.println(test);

  }
}

当我运行代码时,我收到以下错误:

Exception in thread "main" java.lang.UnsatisfiedLinkError:
Error looking up function 'IsStopped':
The specified procedure could not be found.

我知道这个错误说它无法找到该功能,但我不知道如何修复它。

我正在尝试使用此API mt4api

这是方法,我试图访问MQL4

谁能告诉我我做错了什么?

我已经看过其他替代品,比如jni4net ,但我也无法做到这一点。

如果有人可以将我链接到一个教程,告诉我如何设置它,或者知道如何,我会很高兴。

贸易?
狩猎几毫秒刮胡子?
转而进入分布式处理...... 绝对比依赖API更安全!

虽然你的OP被引导到如何将java调用.NET DLL函数,但让我勾勒出一个更加安全的解决方案

使用基于AI / ML回归的外汇交易预测器,我在同一片森林里狩猎。 在过去大约12年中发现的最佳解决方案,花了大约几百人*多年的经验,按以下方式设置:

Host A执行交易:运行MetaTrader Terminal 4,包括Script和EA --- 分布式处理系统使用ZeroMQ低延迟消息/信令框架 (需要大约几十微秒)进行通信

Host B对交易工具执行预测的AI / ML处理(大约几百微秒适用)

Cluster C执行连续的AI / ML预测器重新训练和HyperParameterSPACE模型选择(确实需要很多CPU小时,连续模型自适应过程全天候运行)


使用ZeroMQ信令/消息传递层具有端口和/或绑定,可用于大多数主流和许多小众编程语言,包括java

仅针对已发布的API进行隐藏的危险:

虽然系统集成和测试的努力是巨大的,但API规范对于规范爬行总是危险的。

这就是说,在MT4语言规范的静默更改之后,添加了无数人*月的调试,这些规范会破坏以前的工具+库。 为什么? 想象一下。 前段时间, MQL4停止为MQL4 ,并以名称New - MQL4默默地转向MQL5 在编译中的其他变化中,棺材中有许多小钉和大钉 - string令人惊讶地不再是一个string并被隐藏为内部struct - 人们可以猜出所有DLL调用会导致什么。

所以,要注意API蠕变。


它是否会损害分布式处理解决方案?

没有。

通过明智的消息布局设计,MetaTrader Terminal 4行为没有任何不利影响,所有逻辑(包括策略决策)都被置于这个爬行平台之外。

可行的。 快速而聪明。 如果您的预算允许,也可以使用远程GPU集群处理。


它在Strategy Tester中是否有效?

是的,它确实。

如果有人依靠内置的策略测试程序,那么分布式处理模型仍然适用于那里。 性能取决于首选的建模风格,整整一年,逐个滴答模拟,相当复杂的AI / ML组件在常见的COTS台式PC系统上花了几天时间(经过多年的定量研发,经过多年的研发,我们做到了根本不在内部使用Strategy Tester,但请求是批量测试y / y tick-data,因此可以在这里进行评论)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM