从 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,但我也无法使用它。

如果有人可以 link 向我展示如何设置或知道如何设置的教程,我会很高兴。

交易?
寻找几毫秒来削减?
宁愿进入分布式处理... 绝对比依赖 API 更安全!

虽然您的 OP 被引导到如何弯曲 java 来调用 .NET DLL 函数, 让我勾画一个更安全的解决方案

使用基于 AI/ML-regression 的外汇交易预测器,我在同一个森林里打猎。在过去大约 12 年内找到的最佳解决方案,花费了大约几百人 * 年的经验,按以下方式设置:

Host A 执行交易:使用脚本和 EA 操作 MetaTrader 终端 4 --- distributed-processing system communicates with with a use of ZeroMQ low-latency messaging/signalling framework(大约需要几十微秒)

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

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


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

与已发布的 API 背道而驰的隐藏危险:

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

这就是说,在 MT4 语言规范的无声更改使您以前的工具 + 库脱轨之后,调试花费了无数人*月。为什么?想象一下。前段时间,MQL4 不再是 MQL4,而是默默地转向 MQL5,名称为 New-MQL4。在编译的其他变化中,棺材里有许多大大小小的钉子 -- string 出人意料地不再是 string 而是隐藏为内部 struct -- 谁能猜出所有 DLL 调用会导致什么。

所以,小心 API 爬行。


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

没有

通过明智的消息布局设计,MetaTrader Terminal 4 行为不会产生不利影响,并且所有逻辑(包括策略决策)都放在这个爬行平台之外。

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


即使在 Strategy Tester 中也能正常工作吗?

是的,确实如此。

如果有人有勇气依赖内置的策略测试器,分布式处理模型仍然可以在那里工作。性能取决于首选的建模风格,完整的一年,滴答滴答的模拟,相当复杂的 AI/ML 组件在普通的 COTS 桌面 PC 系统上花费了几天时间(经过多年的 Quant 研发,我们根本不在内部使用 Strategy Tester,但请求是批量测试 y/y 分时数据,因此可以在此处评论)。