我找到了具有该find_library功能的库
find_library(MY_LIB lib PATHS ${MY_PAHT})
Run Code Online (Sandbox Code Playgroud)
如果找到库,${MY_LIB}将指向正确的位置.如果未找到库,${MY_LIB}则会MY_LIB-NOTFOUND.
但是我该如何测试呢?
if(${MY_LIB} EQUAL 'MY_LIB-NOTFOUND')
...
endif()
Run Code Online (Sandbox Code Playgroud)
总是评估为假.
编译我的应用程序时遇到问题,这是受位图等离子的启发.我在打电话
if ((ret = AndroidBitmap_getInfo(env, bitmap, &info)) < 0) {
LOGE("AndroidBitmap_getInfo() failed ! error=%d", ret);
return;
}
if (info.format != ANDROID_BITMAP_FORMAT_RGB_565) {
LOGE("Bitmap format is not RGB_565 !");
return;
}
if ((ret = AndroidBitmap_lockPixels(env, bitmap, &pixels)) < 0) {
LOGE("AndroidBitmap_lockPixels() failed ! error=%d", ret);
}
/*****code here***********/
AndroidBitmap_unlockPixels(env, bitmap);
Run Code Online (Sandbox Code Playgroud)
我在源文件中包含了android/bitmap.h.我在ubuntu 10.10上使用android-ndk-r5b和sdk-9.
我收到了一个错误
/home/user5432/workspace/bitmapproj/obj/local/armeabi/objs-debug/mybitmap.o : In function Java_com_example_plasma_PlasmaView_renderPlasma
"undefined reference to AndroidBitmap_getInfo"
"undefined reference to AndroidBitmap_lockPixels"
"undefined reference to AndroidBitmap_unlockPixels"
Run Code Online (Sandbox Code Playgroud)
问题出在调试代码上.但是问题是什么?任何人都有答案吗?
我得到的错误:
错误:对'__android_log_print'的未定义引用
我已将此行添加到我的.cpp文件中:
#include <android/log.h>
Run Code Online (Sandbox Code Playgroud)
我尝试过两种方法:__ android_log_print和__android_log_write
我还在我的Android.mk文件(我手动编译)中链接了日志库.
LOCAL_LDLIBS:= --llog
我也尝试了几种我认为的替代品:
LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -llog
Run Code Online (Sandbox Code Playgroud)
这是我的Android.mk:
LOCAL_PATH := $(call my-dir)
#used to skip re-compiling libraw
#include $(CLEAR_VARS)
#LOCAL_MODULE := libraw_r
#LOCAL_SRC_FILES := ../obj/local/armeabi/libraw_r.so
#LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/libraw
#include $(PREBUILT_SHARED_LIBRARY)
#used for compiling libraw
include $(CLEAR_VARS)
LOCAL_CFLAGS += -I$(SYSROOT)/usr/lib/include/libraw -pthread -w
LOCAL_CXXFLAGS += -I$(SYSROOT)/usr/lib/include/libraw -pthread -w
LOCAL_MODULE := libraw_r # name of your module
LOCAL_LDLIBS += -L$(SYSROOT)/usr/lib -lstdc++ # libraries to link against, lstdc++ is auto-linked
LOCAL_SRC_FILES := internal/dcraw_common.cpp …Run Code Online (Sandbox Code Playgroud) java-native-interface android-ndk android-studio android-gradle-plugin
从我正在运行的以下 C++ 代码运行我的 Flutter 应用程序(在 Android 上)时尝试打印到控制台dart:ffi:
#include <iostream>
std::cout << "Hello, World!";
Run Code Online (Sandbox Code Playgroud)
在终端中没有给我任何输出。我如何从 C++ 打印到 Flutter 终端?
我知道我的函数可以正常工作,因为我在指针/返回值上得到了正确的操作。
我有以下问题:我有两组不同的文件(主文件和另一组文件),我希望将它们分开。因此,我有一组文件(主文件),我以这种方式配置:
set(libplayersource
....
)
add_library( # Sets the name of the library.
libplayer
# Sets the library as a shared library.
SHARED
# Provides a relative path to your source file(s).
${libplayersource})
Run Code Online (Sandbox Code Playgroud)
然后,我有了第二组文件(其他文件),我以这种方式配置:
set(codec_source
...)
add_library(libcodec SHARED ${codec_source})
Run Code Online (Sandbox Code Playgroud)
最终,我需要链接这两套文件:
target_link_libraries( # Specifies the target library.
libplayer
libcodec)
Run Code Online (Sandbox Code Playgroud)
在完成此配置之后,我还需要包含loglib才能使其正常运行。首先,我需要找到该log库,然后将其包含在本机库中。
find_library( # Sets the name of the path variable.
log-lib
# Specifies the name of the NDK library that
# you want CMake to locate.
log)
Run Code Online (Sandbox Code Playgroud)
另外,我应该进行编辑target_link_libraries …