小编idi*_*dij的帖子

在进程中隔离和多次实例化C库

我们有一个C库(.lib windows和.a linux),它只允许创建一个单例,并且一旦实例化,也不会正常关闭(内存泄漏和线程保持活动状态).

重写它并将错误排除在外,是否有一种简单的方法可以在进程中隔离这种行为不当的代码,从而可以删除单例限制,并且可以对不清洁的整理进行沙盒处理?

我主要对任何进程中的选项感兴趣,如果确实有的话.一个单独的过程显然会解决它,但是会产生架构开销以允许远程控制库,除非有非常低影响的解决方案(它具有广泛的API,因此保持大量的粘合剂并不是特别有吸引力).

c c++ ipc

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

C/C++头文件到java

是否有任何好的工具可以从头文件生成java(如果需要,+ JNI支持),以便可以按原样使用C或C++库.有点像javah的逆转.真正的功能将在C/C++中,Java对于某些用户来说只是一个垫片.

我不是JNI的专家,但据我所知,Javah强迫你做到这一点.除非你自己编写一个转换层,否则它会强迫你让JNI-isms不必要地渗透到C代码中.手动编写转换层基本上是浪费时间,因为头文件中的所有信息都以此开头.

c c++ java java-native-interface

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

如何区分Android ScrollView的最终用户滚动与编程滚动?

背景:我有一个ScrollView/TextView对,它接收来自外部源的间歇性文本流.它会在每次更新时自动滚动到底部.

我希望用户能够通过手动滚动到某个地方来突破自动向下滚动模式,但是我不清楚如何将手动滚动与我自己编写的程序滚动区分开来.

我的UI更新在计时器上运行以缓冲重绘:

private Handler outputUpdater = new Handler ();
private static String outputBuffer = "";
private static boolean outputHasChanged = false;
private static final Object lock = new Object ();

private Runnable outputUpdaterTask = new Runnable () {
    public void run () {
        synchronized (lock) {

            // if the output has changed, update the TextView
            if (outputHasChanged) {
                TextView tv = (TextView) findViewById (R.id.textView);
                tv.setText (outputBuffer);
            }

            // if the output has changed, or the scroll hasn't reached …
Run Code Online (Sandbox Code Playgroud)

android scrollview

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

标签 统计

c ×2

c++ ×2

android ×1

ipc ×1

java ×1

java-native-interface ×1

scrollview ×1