gpt4 book ai didi

java - 在没有第 3 方库的情况下在 Java 中使用 C# DLL

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:52:03 25 4
gpt4 key购买 nike

我有一个需要在 Java 中使用的 C# dll。该 dll 带有一个 .chm 文件,其中概述了类的方法/字段。经过研究,我决定最好的方法是创建一个 C++cli 包装器并从那里使用 JNI 来获得我需要的 Java。

类的设计使用方式是这样的

MyCSharpClass myC = MyCSharpClass.Instance; //Instance is a static field of MyCSharpClass
myC.setState("ON"); // Accepts a string, returns an int
myC.getNetwork(); // Returns a string

Instance是一个静态字段,那里的两个方法调用返回int。

我试图将我的包装器基于此处的示例:http://pragmateek.com/using-c-from-native-c-with-the-help-of-ccli-v2/

我对使用 JNI 从 Java 调用 C++cli DLL 没有任何问题,除了当我尝试在 C++cli 中从 C# 实例化类实例时,JVM 崩溃。

_private->myCSharpClass= gcnew MyDLL::MyCSharpClass(); 

不起作用,因为该类没有构造函数并且

_private->myCSharpClass= MyDLL::MyCSharpClass::Instance;

也不行。

我不知道该做什么。我已经阅读了几个小时的帖子和示例,但没有取得任何真正的成功。任何帮助将不胜感激。

最佳答案

假设Instance成员是一个属性而不是一个字段,你可以试试下面的方法吗?

_private->myCSharpClass= MyDLL::MyCSharpClass::get_Instance()

在 C# 中,属性实际上是方法。

关于java - 在没有第 3 方库的情况下在 Java 中使用 C# DLL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40495033/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com