0

我是 JNA 基础设施的新手,但我认为要点是我有一些库“someLib”,并且我创建了一个 java 接口来匹配它。那么我可以“只是”使用它吗?

但问题是我不确定我需要模拟什么,特别是有些类我需要它的特性。

可以说我的 C++ 库有一个“AdvancedString”对象——它在内部使用了一些其他类。

这意味着它看起来像这样:

class B { ... };

class AdvancedString { 
  private: 
    B b;

  public:
    AdvancedString doSomething () { ... }

};

而且我需要能够在 Java 代码中说出 AdvancedString.doSomething() 并让它工作。这意味着我需要...为 AdvancedString 类创建一个接口?

public interface AdvancedStringInterface extends StdCallLibrary {
  public AdvancedStringInterface doSomething ();
}

这看起来合理吗?或者我错过了什么。感谢您提供的任何见解!

4

1 回答 1

1

JNA 将帮助您访问 C 函数和数据。一种选择是在 C API 中公开 C++ 功能。

如果您想访问许多 C++ 类,SWIG更合适。它可以为您的 C++ 类创建 Java 包装器。它非常强大,但有一个学习曲线。

于 2010-12-16T23:28:16.557 回答