是否可以编写一个运行本机,平台相关代码的扩展?我是一个扩展新手(什么短语!):),请你指点我这个主题的好材料?(向Google提供的好关键字就足够了)
编辑:我开始查看Gecko SDK,这是一个相当大的主题,我不确定这是我想要的.
我很满意一本友好的手册(这不是一个原始参考,而是一些关于如何使用XPCOM进行扩展的教程(如果是这样的话).好的关键词仍然很受欢迎.
我问题的核心:
我正在尝试使用网格包的convertUnit,convertX和convertY函数将npc单位转换为本机单位.(NPC =归父坐标,可能被称为NDC单位,标准化设备坐标到一些基础的图形R.我试图让本机台,那些在该地块绘制,所以在XLIM和ylim单位来.)然而,当我尝试这样做时:
> xyplot(1:10~1:10)
> convertX(unit(.9, "npc"), "native")
[1] 484.2native
Run Code Online (Sandbox Code Playgroud)
当我期待一个接近9的数字作为原生x坐标.看来convertX正在返回设备坐标/像素中的单位.
推理: 我正在尝试使用基本定位器类型设备返回npc坐标,并从那些npc坐标转换为绘制图形的本机坐标.虽然我可以使用基本图形的定位器或grid.locator,但我试图通过从npc转换回本机来扩展这个新的非阻塞定位器的功能到网格/点阵图形.convertUnit和convertY也不起作用.
问题 网格是否有可能从npc转换回活动的绘图窗口的原生坐标?为什么convertX返回像素而不是原生坐标?
非常感谢提前.
编辑标签和草率错误之前留下xyplot.我道歉,但它与xyplot一致.
Android OS在android.os.Binder.java中有一个名为BinderProxy的类.该类具有以下函数声明:
public native boolean transact(int code, Parcel data, Parcel reply, int flags) throws RemoteException;
Run Code Online (Sandbox Code Playgroud)
我想知道调用此函数时执行的代码.
我该怎么做?
是否有任何应用程序可以创建Java应用程序的本机应用程序启动器?作为"本机"术语,我的意思是"看起来像普通的,依赖于平台的应用程序,只启动java -jar foobar.jar,如果没有安装JVM则显示错误".我听说过Launch4j,但它只适用于Windows.我想要多平台(Win + Lin + Mac)解决方案.我不是在讨论shell脚本; 我想要正常的可执行文件.
顺便说一句,Eclipse看起来它有类似我想要的东西.
问候.
1)在iOS和Android Native库可用的情况下,为了使用库来开发跨平台应用程序,需要采取哪些适当,有效和简单的步骤?绑定Android库还是iOS?如果我们绑定Android本机库,我们是否能够在Xamarin.iOS应用程序中使用此绑定库,反之亦然?
2)如果有可用的C++库,是否可以使用该库来开发跨平台应用程序?
提前致谢!
(只是Xamarin的初学者,如果问题似乎不合适,请找借口)
在主题中,有人可以向我解释在OpenCV中使用NativeCameraView和JavaCameraView有什么区别?
目前我使用JavaCameraView来检测指尖,它非常慢.我想知道使用NativeCameraView是否会进行更改?
问题
我无法加载并将已编译的c类中的方法调用到leiningen项目中.我的基本方法是加载一个Java类JavaWrapper.java,它使用JNI调用本机代码中的一些本机方法,wrapper.o然后通过这个java包装类调用方法.
我想有一个classLoader问题,加载一个java类,它从clojure项目加载本机代码,但鉴于我似乎无法直接获取clojure代码在库路径上找到wrapper.o,我不确定如何处理这个.
列宁项目文件
(defproject lein-native-test "0.1.0-SNAPSHOT"
...
:java-source-paths ["java-path"]
:jvm-opts ["-Djava.library.path=.:./native:/absolute/path/to/native"] ;;not sure what format it wants
)
Run Code Online (Sandbox Code Playgroud)
使用main方法的clojure文件
我尝试使用四种方法稍微修改它们,所有这些都包含在下面的代码中以及注释中的相应错误.
(ns lein-native-test.core
(:import (com.test JavaWrapper)))
(def -main []
;;four things I've tried and their errors
(clojure.lang.RT.load "/abs/path/to/wrapper.o") ;;could not find file /abs/path/wrapper.o_init.class or wrapper.o.clj
(clojure.lang.RT.loadLibrary "wrapper.o") ;;UnsatisfiedLinkError no wrapper.o in java library path
(JavaWrapper/load "/abs/path/to/wrapper.o") ;;UnsatisfiedLinkError com.test.JavaWrapper.setup()
(assembly-load "/abs/path/to/wrapper.o") ;;unable to resolvesymbol: assembly-load
)
Run Code Online (Sandbox Code Playgroud)
使用JNI,JavaWrapper.java的本机方法的Java代码
public class JavaWrapper{
public native void setup();
public static void load(String lib){ System.load(lib);}
} …Run Code Online (Sandbox Code Playgroud) 我的UWP应用程序在调试时运行完美,但在发布时即时崩溃,我已经将软件包上传到应用程序商店两次,他们告诉我我的应用程序也不能正常工作.解开.NET Native的东西有帮助,但我不确定它是否可以在其他用户的PC上工作,我不知道那是什么,我认为出了问题.
我的其他项目可以完美地运行Release构建,我已经尝试清理所有内容并重新构建但是我得到了同样的错误.
谢谢
编辑:尝试在我的笔记本电脑上运行,卡在启动画面然后得到相同的错误,我甚至尝试删除MainPage构造函数和OnNavigatedTo上的任何内容.
使用NDK 10版本,我曾经用于ndk-build编译许多不同ABI和多个API级别的独立二进制文件.这些二进制文件将包含在一个应用程序中.但是,我在本文所述的新开发机器上安装了NDK .这导致ndk-bundle我的Android SDK目录中有一个文件夹.我曾经从命令行编译代码,然后将二进制文件复制到我的Android Studio项目的资源中,但我无法弄清楚如何使用NDK 13这样做,所以我尝试按照教程包含我的本机代码Android Studio项目.但是,几乎所有最近的指令都假设一个人想要构建一个库,而不是一个独立的二进制文件,所以我没有走得太远.
如果我弄清楚如何让它工作,我会切换到CMake.我的本机项目具有以下(简化)结构:
本地人
Android.mk
LOCAL_PATH := $(call my-dir)/my_tool/src
include $(CLEAR_VARS)
LOCAL_MODULE := my_tool
LOCAL_SRC_FILES := main.c
include $(BUILD_EXECUTABLE)
Run Code Online (Sandbox Code Playgroud)Application.mk
APP_ABI := all
APP_PLATFORM := android-21
Run Code Online (Sandbox Code Playgroud)my_tool
如何在Windows 10开发机器上使用Android Studio或NDK从命令行编译?
编辑:
我在build.gradle中使用它:
externalNativeBuild {
ndkBuild {
path "../native/Android.mk"
}
}
Run Code Online (Sandbox Code Playgroud)
Gradle创建了一个.externalNativeBuild包含构建配置的目录,但我无法找到如何实际构建本机代码.运行gradle时不会创建二进制文件.
我找不到有关gradle配置的任何信息ndk-build.
我正在尝试在android studio项目中使用opencv本机库。对于函数knnMatch的未定义引用,我得到一个错误。
我已将openCVLibrary添加到我的项目中,并成功使用了其他openCV功能。
更新:添加我的编译文件
我的应用程序build.gradle:
apply plugin: 'com.android.application'
//
android {
compileSdkVersion 27
buildToolsVersion '27.0.3'
//
defaultConfig {
minSdkVersion 21
targetSdkVersion 27
...
externalNativeBuild {
cmake {
arguments "-DANDROID_ARM_NEON=TRUE", "-DANDROID_TOOLCHAIN=clang" , "-DANDROID_STL=c++_static","-DCMAKE_BUILD_TYPE=Release", "-DANDROID_CPP_FEATURES=rtti exceptions"
cppFlags "-D__STDC_FORMAT_MACROS" , '-O3','-fopenmp','-fsigned-char', "-std=c++14", "-frtti", "-fexceptions", "-mfloat-abi=softfp", "-Wall"
}
ndk {
abiFilters 'arm64-v8a'
}
}
}
//
externalNativeBuild {
cmake {
path "CMakeLists.txt"
}
}
...
}
//
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
implementation project(':openCVLibrary340') //Module
}
Run Code Online (Sandbox Code Playgroud)
我的CMakeList.txt:
cmake_minimum_required(VERSION 3.4.1)
# …Run Code Online (Sandbox Code Playgroud)