小编Ste*_*hof的帖子

如何构建共享库并在其他ndk程序中调用它

我想构建一个共享库.要构建它,我需要调用另一个共享库.这是我做的:

1.创建一个名为"BuildLib"的Android项目,并在项目目录下添加一个新文件夹"jni".jni文件夹的内容:

jni - > Android.mk
- > Application.mk
- > add.cpp
- > add.h add.cpp只做两个数字加法:

add.h:

int add(int a,int b);

add.cpp:

#include "add.h"  
int add(int a,int b){
    return a+b;}
Run Code Online (Sandbox Code Playgroud)

Android.mk:

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES  := add.cpp 
LOCAL_MODULE     := add
include $(BUILD_SHARED_LIBRARY)
Run Code Online (Sandbox Code Playgroud)

构建项目后,我在目录下获得了libadd.so $(BUILDLIB)/libs/armeabi/.

创建另一个名为"CallLib"的Android项目.复制libadd.soadd.h对JNI文件夹,创建Android.mk,Application.mkcall_add.cpp.

Android.mk:

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := libadd.so
LOCAL_MODULE := add_prebuilt
include $(PREBUILD_SHARED_LIBRARY)

include $(CLEAR_VARS)
LOCAL_C_INCLUDES := $(LOCAL_PATH?
LOCAL_SRC_FILES …
Run Code Online (Sandbox Code Playgroud)

java-native-interface android android-ndk

13
推荐指数
1
解决办法
2万
查看次数

C#Backgroundworker:定期更新PictureBox的方法是什么?

我正在使用BackgroundWorker定期检查硬件开关.由于它通过慢速RS485网络连接,我必须延迟下一次状态更新.在开关状态更改时,我想更新OK/nOK图片框.这是在nOK pictureBox上实现的绿色OK图片框.这里没有真正的工作.

为了扩展性,我决定使用Backgroundworker.最后我想要一个隐藏的工人,这个

  1. 全局提供三个交换机的状态和
  2. 更新StatusChange PictureBoxes.

问题描述 启动BackgroundWorker后,它会按预期工作.然而,GUI冻结了.

我尝试了什么?MSDN的BackgroundWorker类注1 表示,该GUI应通过ProgressChanged更新.我尝试通过Worker_Switch.ReportProgress(fakeProgress ++)引发此事件并失败.PictureBox不再更新.

来自设计师的片段

this.Worker_Switch = new System.ComponentModel.BackgroundWorker();
// 
// Worker_Switch
// 
this.Worker_Switch.WorkerSupportsCancellation = true;
this.Worker_Switch.DoWork += new System.ComponentModel.DoWorkEventHandler(this.Worker_Switch_DoWork);
Run Code Online (Sandbox Code Playgroud)

主表格的片段

delegate void SetEventCallback(object sender, DoWorkEventArgs e);   // Threadsafe calls for DoWork

private void btnBackgroundworker_Click(object sender, EventArgs e)
{
    if (!Worker_Switch.IsBusy)
    {
        Worker_Switch.RunWorkerAsync();                              
    }
}

private void Worker_Switch_DoWork(object sender, DoWorkEventArgs e)
{
    // Worker Thread has no permission to change PictureBox "pictureBoxSwitchrightOK"
        // Therefore this method calls itsself in the MainThread, …
Run Code Online (Sandbox Code Playgroud)

.net c# multithreading picturebox backgroundworker

2
推荐指数
1
解决办法
4483
查看次数