【发布时间】:2012-08-05 21:56:45
【问题描述】:
我很难解释我需要实现什么,所以我真的希望我能够做到。
我有一个 C 进程,它使用 ipc 消息队列来发送和接收数据。我还有一个 Java 应用程序需要向该 C 进程发送和接收消息,因此它需要访问该队列。
我一直在寻找一种方法来做到这一点,我认为 JNA(java natice 访问)可能是一个解决方案。问题是,显然,我需要一个 DLL,以便映射和使用我需要的方法(msgget、msgsnd、msgrcv、msgctl),但我不知道应该加载哪个 DLL。我对此很陌生,所以我感到迷茫。
还有其他方法可以让这两个应用程序使用消息队列进行通信吗?还是 JNA 是一个很好的解决方案,我只需要找到正确的 DLL 来加载?
提前致谢。
【问题讨论】:
-
它与 C 进程必须加载的 DLL 相同。 (最好是完全相同的 DLL)我会假设它是 Windows 的一部分。
-
首先,感谢您的帮助。问题是我不确定是否理解。要在 C 程序中使用这些方法,我只需要包含“sys/ipc.h”和“sys/msg.h”,但我不知道这些头文件是否是 DLL 的一部分(我没有使用 DLL直到现在)或者,就像 victorsavu3 所说,我将不得不使用 JNI,因为它们只是包装器。
-
无论哪种方式,您都使用相同的 DLL。恕我直言,在这种情况下使用 JNI 可能会更容易,而且肯定会更快,我认为这是使用 IPC 的一部分。
-
再搜索一下,我发现了这个“en.wikipedia.org/wiki/C_POSIX_library”。由于包含出现在列表中,我开始了一个加载 C POSIX 库的非常小的示例。现在我有一个错误,但我会稍后发布。再次感谢。