如何从jni打印CString?
Usualy我用这段代码打印简单的字符串:
#include <jni.h>
#include <android/log.h>
//...
__android_log_print( ANDROID_LOG_DEBUG, "msgTitle", "msg");
但CString格式怎么样?
错误日志:
cannot convert 'CString {aka CMSStringT<wchar_t>}' to 'char const*' for argument '3' to 'int __android_log_print(int, char const*, char const*, ...)'
我已经尝试过不同的演员,但它仍然不起作用。
答案 0 :(得分:3)
尝试创建跨平台日志标题,如:
Logs.h
# ifdef ANDROID
// LOGS ANDROID
# include <android/log.h>
# define LOGV(...) __android_log_print(ANDROID_LOG_VERBOSE, LOG_TAG,__VA_ARGS__)
# define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG , LOG_TAG,__VA_ARGS__)
# define LOGI(...) __android_log_print(ANDROID_LOG_INFO , LOG_TAG,__VA_ARGS__)
# define LOGW(...) __android_log_print(ANDROID_LOG_WARN , LOG_TAG,__VA_ARGS__)
# define LOGE(...) __android_log_print(ANDROID_LOG_ERROR , LOG_TAG,__VA_ARGS__)
# define LOGSIMPLE(...)
# else
// LOGS NO ANDROID
# include <stdio.h>
# define LOGV(...) printf(" ");printf(__VA_ARGS__); printf("\t - <%s> \n", LOG_TAG);
# define LOGD(...) printf(" ");printf(__VA_ARGS__); printf("\t - <%s> \n", LOG_TAG);
# define LOGI(...) printf(" ");printf(__VA_ARGS__); printf("\t - <%s> \n", LOG_TAG);
# define LOGW(...) printf(" * Warning: "); printf(__VA_ARGS__); printf("\t - <%s> \n", LOG_TAG);
# define LOGE(...) printf(" *** Error: ");printf(__VA_ARGS__); printf("\t - <%s> \n", LOG_TAG);
# define LOGSIMPLE(...) printf(" ");printf(__VA_ARGS__);
# endif // ANDROID
并在JNI代码中添加如下内容:
的main.c
#define LOG_TAG "JNIFILE"
main()
{
LOGD("Test message");
}
适合我。