gpt4 book ai didi

android ndk开发问题: 'Invalid arguments' error for memcpy function

转载 作者:太空宇宙 更新时间:2023-11-03 11:39:56 25 4
gpt4 key购买 nike

我为 android 项目使用了 c++ 代码,所以我使用了 NDK 工具。IDE是eclipse。编译项目时,memcpy 函数出现错误:

Invalid arguments '
Candidates are:
void * memcpy(void *, const void *, ?)
'

对于 mallocstrftime 也是如此。

我是在Windows系统下开发的。

为什么?

这是我的部分代码:

#include <vector>
#include <iostream>
#include <fstream>
#include <iterator>
#include "dirent.h"

#include <jni.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <android/log.h>

string getCurrentDate() {
time_t rawtime;
struct tm * timeinfo;
char buffer[80];

time(&rawtime);
timeinfo = localtime(&rawtime);

// #######################error part
strftime(buffer, 80, "%Y-%m-%d_%H-%M-%S", timeinfo);

string timeStr(buffer);

return timeStr;
}

std::string jstring2str(JNIEnv* env, jstring jstr) {
char* rtn = NULL;
jclass clsstring = env->FindClass("java/lang/String");
jstring strencode = env->NewStringUTF("GB2312");
jmethodID mid = env->GetMethodID(clsstring, "getBytes",
"(Ljava/lang/String;)[B");
jbyteArray barr = (jbyteArray) env->CallObjectMethod(jstr, mid, strencode);
jsize alen = env->GetArrayLength(barr);
jbyte* ba = env->GetByteArrayElements(barr, JNI_FALSE);
if (alen > 0) {
// ####################error for malloc
rtn = (char*) malloc(alen + 1);
// ####################error for memcpy
memcpy(rtn, ba, alen);
rtn[alen] = 0;
}
env->ReleaseByteArrayElements(barr, ba, 0);
std::string stemp(rtn);
free(rtn);
return stemp;
}
...

最佳答案

我已经使用以下方法解决了这个问题:

  1. 转到设置:属性 -> C/C++ 常规 -> 路径和符号
  2. 选择“包含”选项卡并选择“GNU C++”
  3. 添加新的包含目录:${NDKROOT}\toolchains\arm-linux-androideabi-4.8\prebuilt\windows-x86_64\lib\gcc\arm-linux-androideabi\4.8\include,其中${NDKROOT} 是我的 android-ndk 根目录的环境

希望对遇到同样问题的人有所帮助。仍然感谢您的所有帮助。

关于android ndk开发问题: 'Invalid arguments' error for memcpy function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19534197/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com