Ric*_*rdo 4 c android android-ndk
我是C/C++和Android NDK的初学者,我在尝试创建本机库时遇到问题.我的代码在CDT上使用MinGW进行编译,但是当我在JNI文件上编写相同的代码时,会出现错误.
我的代码是:
int n = 7;
int positions[n];
int final_order[n];
memcpy(positions, final_order,sizeof(final_order));
Run Code Online (Sandbox Code Playgroud)
这个插件告诉我:
Invalid arguments 'Candidates are: void * memcpy(void *, const void *, ?)'
Run Code Online (Sandbox Code Playgroud)
这是来自MinTW CDT的标题:
_CRTIMP void* __cdecl __MINGW_NOTHROW memcpy (void*, const void*, size_t);
Run Code Online (Sandbox Code Playgroud)
这是来自Android NDK的标题:
extern void* memcpy(void *, const void *, size_t);
Run Code Online (Sandbox Code Playgroud)
使用Eclipse进行NDK开发时存在已知的索引问题.
请在此处阅读:https://code.google.com/p/android/issues/detail?id = 33788
靠近底部有一个合理的解决方法,我自己使用:
我们想要的是使用Android GCC工具链,但更改实际工具并修改发现选项,以便包含路径和符号正确.
进入C/C++ Buid\Tool Chain编辑器
确保Android GCC是选定的工具链,Android Builder是选定的构建器.
单击"选择工具"选择"允许所有更改"删除Android GCC编译器添加"GCC C编译器"和"GCC C++编译器",以便我们可以索引c和cpp标头.
如果您查看"路径和符号",您会看到我们同时使用GNU C和GNU C++语言,但当然内置的包含路径是错误的.幸运的是,有一个解决方案.
进入C/C++ Build\Discovery选项将发现配置文件范围更改为"配置范围"确保发现配置文件使用"AndroidPerProjectProfile"并确保选中这两个复选框.
然后,我必须手动添加我自己的包含目录和definies下 Project Properties -> C/C++ General -> Paths and Symbols
值得注意的是,您的代码编译得很好.如果您愿意,可以关闭索引编制,但如果您仍然希望索引编制的优势,则必须解决此问题.
| 归档时间: |
|
| 查看次数: |
2657 次 |
| 最近记录: |