本机代码中的数据存储

发布于 2024-12-10 07:01:33 字数 219 浏览 0 评论 0原文

我想在 C++ 上编写一个向量类(或其他类)。我想使用 Java 中的方法。如何做到这一点?我想使用 JNI 来达到这个目的。但是 javah 生成了我的 c 原型。我想将数据存储在C++使用区域中,而在java中仅使用没有字段的接口。因此,问题是如何用 C 代码存储矢量数据。

注意:

简单来说,我需要通过JNI包装C++接口并在Java中拥有这个接口。

I want to write a vector class (or something other) on C++. And I want to use its methods from Java. How to do this? I want to use JNI for this purpose. But javah generate me c prototypes. I want to store data in the C++ use area and use in java only an interface without fields. So, the problem is how to store the vector data in C-code.

Note:

Simply speaking, I need to wrap C++ interface by JNI and to have this interface in Java.

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

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

发布评论

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

评论(1

狼性发作 2024-12-17 07:01:33

您需要有一个 C 可调用的 C++ 代码包装器。该方法类似于如何允许从纯 C 中使用 C++ 库。这是一个简单的示例(根本没有错误检查 - 不要用于实际的生产代码):

void * MyVectorCreate()
{
    return new MyVector<int>();
}

void MyVectorAdd(void * vector, int item)
{
    static_cast<MyVector<int> *>(vector)->Add(item);
}

void MyVectorDestroy(void * vector)
{
    delete static_cast<MyVector<int> *>(vector);
}

You will need to have a C-callable wrapper around your C++ code. The approach is similar to how you would allow a C++ library to be usable from pure C. Here is a simple example (with no error checking at all -- do not use for real production code):

void * MyVectorCreate()
{
    return new MyVector<int>();
}

void MyVectorAdd(void * vector, int item)
{
    static_cast<MyVector<int> *>(vector)->Add(item);
}

void MyVectorDestroy(void * vector)
{
    delete static_cast<MyVector<int> *>(vector);
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文