小编Vla*_*kin的帖子

JNI 和构造函数

我有一个已编译的库,需要在项目中使用。简而言之,它是一个用于与特定硬件交互的库。我拥有的是 .a 和 .dll 库文件,分别适用于 Linux 和 Windows,以及一堆 C++ .h 头文件,其中包含其中描述的所有公共函数和类。

问题是该项目需要使用 Java,因此我需要为这个库编写一个 JNI 包装器,老实说,我从未这样做过。不过没关系,我正准备学习这个东西。

我在线阅读了一堆文档,并且弄清楚了传递变量、从本机代码创建 java 对象等。

我不明白的是如何使用 JNI 来处理本机构造函数?我不知道这些构造函数的源代码是什么,我只有这样的标题:

namespace RFDevice {

class RFDEVICE_API RFEthernetDetector
{
public:
    //-----------------------------------------------------------------------------
    //  FUNCTION  RFEthernetDetector::RFEthernetDetector
    /// \brief    Default constructor of RFEthernetDetector object.
    ///           
    /// \return   void : N/A
    //-----------------------------------------------------------------------------
    RFEthernetDetector();
    RFEthernetDetector(const WORD wCustomPortNumber);
Run Code Online (Sandbox Code Playgroud)

所以基本上如果我用 C++ 编写程序(我不能),我会做类似的事情

RFEthernetDetector ethernetDetector = new RFEthernerDetector(somePort);
Run Code Online (Sandbox Code Playgroud)

然后处理该对象。但是...我如何使用 JNI 在 Java 中执行此操作?我不明白我应该如何为构造函数创建一个本机方法,该方法将从我的 .a 库调用构造函数,然后以某种方式处理该特定对象?我知道如何从本机代码创建 java 对象 - 但问题是我没有任何有关 RFEthernetDetector 类的内部结构的信息 - 只有其中的一些公共字段和公共方法。

我似乎无法在网上找到合适的文章来帮助我。我怎么做?

更新:进一步澄清一下。

我创建一个 .java 包装类,如下所示:

public …
Run Code Online (Sandbox Code Playgroud)

c++ java java-native-interface constructor

4
推荐指数
1
解决办法
1676
查看次数

直线和正方形之间的交点

我在二维空间中有一个正方形(宽度=高度)。该正方形当前由两个点定义:BottomLeft(X1,Y1) 和 TopRight(X2,Y2)。

正方形是轴对齐的,因此找到其他两个角就像 (X1, Y2) 和 (X2, Y1) 一样简单。

我还有两点——一是总是在方阵内,二是肯定在方阵外。它们不一定位于广场的中心——它们可以位于任何地方。我也知道他们的坐标。

我需要的是找到这两点定义的线段与正方形边之间的交点。我还想知道我与正方形的哪一边相交。给我带来麻烦的是线对角线延伸并且靠近正方形角的情况 - 例如它可以与顶线或边线相交。

暴力法是尝试计算正方形每条边的交点并检查它是否存在。可以通过计算第二个点相对于正方形的位置并丢弃两条线来优化它(例如,如果 X 和 Y 坐标都增加,则无需检查正方形的底部和左侧)。

我想知道是否有更好/更快的解决方案来解决我的问题?我会用Java写

java geometry intersection square line-segment

1
推荐指数
1
解决办法
1384
查看次数