【发布时间】:2013-02-19 10:29:42
【问题描述】:
我在 Windows 上工作,但我在 Mac 上被困在这里。我有佳能 SDK 并在其上构建了 JNA 包装器。它在 Windows 上运行良好,在 Mac 上需要一些帮助。
在 sdk 中,有一个函数可以注册一个回调函数。基本上当相机发生事件时,它会调用回调函数。
在windows上,注册后,我需要使用User32来获取事件并通过以下方式调度事件:
private static final User32 lib = User32.INSTANCE;
boolean hasMessage = lib.PeekMessage( msg, null, 0, 0, 1 ); // peek and remove
if( hasMessage ){
lib.TranslateMessage( msg );
lib.DispatchMessage( msg ); //message gets dispatched and hence the callback function is called
}
在 api 中,我在 Mac 中没有找到类似的类。这个怎么办??
【问题讨论】:
-
您可能想查看 GCEventRef,developer.apple.com/library/mac/documentation/Carbon/Reference/…
-
JNA 的大多数 unix 平台映射都是针对 X11 的,而专门针对 OS X 的映射并不多。Rococoa 通过 OS X 映射提供了更多。
-
@technomage 我现在不能转移到 Rococoa,因为那时我将不得不重写代码。 Windows 1 已经可以正常工作了。我只需要一些技巧来获取信息
-
你应该多读一点关于 rococoa 是做什么的。它是 JNA 之上的一个库,用于方便访问使用 ObjectiveC 的 OS X 库。该项目还有更多的社区专门参与使用来自 Java 的 OS X 库。但最终,您需要一些 OSX 专业知识来确定合适的 OS X 事件 API(除非您的 Canon SDK 提供示例)。
-
如果您要提供佳能 SDK 附带的 OSX 的本机代码示例,您将更有可能得到完整的响应。
标签: java macos java-native-interface jna