是否有最佳实践来访问C++本地COM函数以从C#进行互操作?
例如,如果我有100个C++方法(基本上是本机库),它与核心窗口组件交互.
我想基本上在C#中为这些C++方法创建一个包装器,所以我所有新雇用的员工都可以使用它而不是C++等.C++代码是遗留的,让我感到害怕,所以我只想处理它一次.这里的方法是每个方法都有一个相应的C#方法吗?事实上,还有另一种方法吗?
我可以使用某种包装子系统吗?你们这些人一般都这样做吗?
此外,是否有任何性能考虑等?
是否可以调用JVM的内置本机代码,即java.lang和java.io中各种类调用的代码?换句话说,您是否可以绕过内置的Java API来访问各种系统级调用,例如文件系统访问?我知道我可以通过构建我自己的本机代码库并通过JNI调用它来实现这一点,但是对于已经内置到JVM中的功能而言,不需要额外的本机库也是优雅的.
有几个站点提供Java源代码.不幸的是,这些并不是指Java本机二进制文件.简而言之:未显示本机函数的源代码.
一个例子是StrictMath.floor.唯一提供的是原始Java声明
public static native double floor(double a);
Run Code Online (Sandbox Code Playgroud)
我感兴趣的是实际的c/c ++代码.他们是如何实际实现的?
我用原生ANSI C++编写了代码,进行了一些复杂的数值分析.我想为它开发一个简单的GUI(几个单选按钮和文本框).我听说微软"托管"的C++代码使GUI开发变得简单,但计算效率却低于原生C++.
所以我的问题是,在保留原生C++的强大功能的同时,开发简单GUI的最佳方法是什么?
请注意我没有开发GUI的经验和VS的非常有限的经验(我只是用它来构建控制台版本).
我正在尝试编写一个使用GNU科学库(GSL)的Android应用程序.特别是,我对'libgslcblas.so'的BLAS实现很感兴趣.我决定利用Android NDK并编写一个Java程序来加载库并进行适当的函数调用.
为了测试这是如何工作的,我尝试编写一个简单的程序来加载'libm.so'并进行任意函数调用.这看起来像我能想到的NDK的一个小问题,但我遇到了以下问题:
07-05 18:11:07.264: I/System.out(1298): debugger has settled (1464)
07-05 18:11:07.583: D/dalvikvm(1298): No JNI_OnLoad found in /system/lib/libm.so 0x41345988, skipping init
07-05 18:11:07.903: W/dalvikvm(1298): No implementation found for native Lissm/libctest/LibCtest;.sqrt (D)D
Run Code Online (Sandbox Code Playgroud)
我的代码如下:
package issm.libctest;
import android.os.Bundle;
import android.app.Activity;
import android.widget.TextView;
public class LibCtest extends Activity
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
TextView tv = new TextView(this);
setContentView(R.layout.activity_lib_ctest);
double x = sqrt(4);
tv.setText( "Sine of: " + x);
setContentView(tv);
}
public native double sqrt(double x);
static
{
System.load("/system/lib/libm.so");
} …Run Code Online (Sandbox Code Playgroud) 移动浏览器内置了地理位置,在使用PhoneGap编译Web应用程序时,可以使用PhoneGap地理位置.
使用一个优于另一个有什么好处吗?如果有,他们是什么?
我原本以为PhoneGap地理定位只会调用相同的浏览器Geolocation,如果我选择坚持使用标准地理位置,我会使用它.
欢迎所有的想法.
我已经看到了大量与ActionbarSherlock的使用相关的答案.即使我使用它几个月我仍然没有答案为什么我应该真的使用?它比普通的Android支持库还提供了什么?我可以使用支持lib来获得相同的视觉外观.我知道它使用支持或本机实现,具体取决于运行的Android版本,但这有什么实际好处?
user-interface android native actionbarsherlock android-support-library
我正在使用mupdf来显示存储在我的Android应用程序的本地存储库中的pdf文件.这工作得很好.现在我必须创建一个列表,显示打开的pdf文档的所有页面的图像,并在每个导航用户到特定页面的图像上添加点击事件.为了解决这个问题,我想知道我可以通过多少方式在我的应用程序中拍摄pdf文档的每一页.
我可以直接在我的Android应用程序中运行mupdf命令,或者我必须在mupdf.c文件中工作吗?请把你的意见放在这里.任何形式的帮助都非常感谢.
我没有收到关于NT进程,因为我使用他们正在返回像值的本地APIs.Since概念STATUS_TIMEOUT,STATUS_PENDINGetc.What不STATUS_PENDING究竟意味着什么?
我的代码是这样的.
NTSTATUS rc;
rc = NtReadFile(
Keybrds[iLoop].hKeyboard,
Keybrds[iLoop].hEvent,
NULL,
NULL,
&IoStatusBlock,
&KbData,
sizeof(KEYBOARD_INPUT_DATA),
&ByteOffset,
NULL
);
Run Code Online (Sandbox Code Playgroud)
在这里,NtReadFile()回归STATUS_PENDING,这意味着什么?
我正在将我们的游戏从使用ndk-build转换为使用Android Studio和CMake。
该应用程序是采用以下形式的JNI应用程序:
Java主要活动(单个非常基本的.java文件)
C ++应用程式码(游戏程式码)
C ++物理代码(要编译并链接为静态库)
C ++图形代码(要编译并链接为静态库)
这3个文件被编译到一个共享的.so lib中,以由main活动加载和运行。
如何将其转换为gradle构建文件和cmakelist?
我看过很多示例,它们只是链接到外部静态库中,没有用。我也需要编译它们,并且希望它们显示在项目视图中,以便我可以编辑源代码。
如果我也可以将静态库的“项目”也放到其他应用程序中,同时保留编辑这些库的源代码的能力(类似于Visual Studio项目文件),那也很好。
这可能吗?
非常感谢,
史蒂夫。
native ×10
android ×4
c++ ×3
java ×3
android-ndk ×2
c ×1
c# ×1
com ×1
cordova ×1
geolocation ×1
interop ×1
jvm ×1
mupdf ×1
open-source ×1
windows ×1