如何使用 SWIG 生成的 C++ java程序中的类

发布于 2024-10-11 15:18:49 字数 197 浏览 4 评论 0原文

我成功构建了一个 C++ 共享库,并使用 System.loadLibrary() 将其加载到我的 Java 程序中。

C++ 文件中的类称为 Classifier

如何在 java 中实例化一个新的“Classifier”对象?我是否必须编译并包含从 Swig 生成的 java 文件才能执行此操作?如果我不想这样做,我可以只使用类中的方法吗?

I am successfully building a shared library that is C++ and loading it in my Java program with System.loadLibrary()

My class in the C++ file was called Classifier

How do I instantiate a new "Classifier" object in java? Do I have to compile and include the java files that are generated from Swig to do such a thing? If I do not want to do that, can I just use the methods from the class?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

战皆罪 2024-10-18 15:18:49

正确使用时,SWIG 将生成一个名为“Classifier”的包装 Java 类。

是的,这需要进行编译——例如,将其包含在您的 IDE 项目和/或构建中。

Java 的 SWIG 文档 展示了如何从 Java 实例化 C++ 对象:

C++ 类也由 Java 类包装。例如,如果您有此类,

class List {
public:
  List();
  ~List();
  void insert(char *item);
  ...

你可以像这样在Java中使用它:

List l = new List();
l.insert("Ale");
...

其他一些想法:

  • 您可以使用 SWIG 命令行上的 -package 选项要求 SWIG 将 Java 类放入您选择的包中。
  • 我个人将生成的代码保存在单独的源代码树中。您将定期删除它,并且不想意外删除非生成的代码。
  • 如果您不需要访问 Java 代码中的任何 C++ 类,您可能会发现 JNA 比 SWIG 更容易使用。

Used correctly, SWIG will have generated a wrapper Java class called "Classifier."

Yes, this needs to be compiled -- e.g., by including it in your IDE project and/or your build.

The SWIG documentation for Java shows how to instantiate a C++ object from Java:

C++ classes are wrapped by Java classes as well. For example, if you have this class,

class List {
public:
  List();
  ~List();
  void insert(char *item);
  ...

you can use it in Java like this:

List l = new List();
l.insert("Ale");
...

A few other thoughts:

  • You can ask SWIG to place the Java class in a package of your choosing, with the -package option on the SWIG command line.
  • I personally keep generated code in a separate source tree. You'll be periodically deleting it, and don't want to accidentally delete non-generated code.
  • If you do not need access to any C++ classes in your Java code, you might find JNA easier to work with than SWIG.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文