相关疑难解决方法(0)

Eclipse编译成功但仍然会出现语义错误

注意:它显然是StackOverflow上的一个经常出现的问题,但是 - 对于我所看到的 - 人们从来没有找到方法或者他们的解决方案对我不起作用

问题:

我正在使用Eclipse Juno ADT.在我尝试更新NDK之前,一切正常.我用新版本(即)替换了我的ndk文件夹(ndk-r8dndk-r8e),在我的Paths and Symbols配置中,我将包含从g ++ 4.6更改为4.7.

它似乎打破了我的索引:我可以编译我的代码,但Eclipse给出了语义错误,就像在[ 1 ]和[ 2 ]中一样.这些错误主要是由来自OpenCV4Android使用的符号,如distance,pt,queryIdxtrainIdx.

当我尝试备份到我的旧配置时,索引仍然被破坏了!我找不到改变这个的方法.


我试过了什么

  • 清理项目
  • 重建,刷新以及"索引"子菜单中的所有其他选项(在项目中"右键单击"时)
  • 在首选项中禁用/启用索引器
  • 验证trainIdx仅在我的OpenCV4Android中出现的符号包含在该Paths and Symbols部分中.
  • Paths and Symbols部分中更改我的包含的顺序.我基本上试图将OpenCV包含在开头和结尾.

一些观察

什么不起作用

我假设它是CDT索引,原因如下:

  • 在命令行中,我可以使用ndk-build clean和构建我的项目ndk-build.
  • 当我启动Eclipse时,在打开C++文件(从jni文件夹中)之前我没有错误.
  • 我总是可以构建项目,但只要我打开一个C++文件,就不能再运行应用程序了,因为很多 Field '<name>' could not be resolved.
  • 如果我不打开C++文件,Eclipse不会报告任何错误,并且可以成功构建和部署Android应用程序.

趣味事实

下面的代码报告有关错误line …

c++ eclipse android opencv android-ndk

38
推荐指数
3
解决办法
2万
查看次数

如何使用android ndk和eclipse编译c ++ 11代码?

我正在使用android NDK r8d和eclipse Juno.我试图编译它使用C++ 11的东西像C++代码mutex,lock_guard,shared_ptr等在Eclipse一个原生Android项目.

我得到的错误如下:

"错误:'shared_ptr'不是'std'的成员"

"致命错误:互斥:没有这样的文件或目录"

我在这里遇到了类似的问题.它似乎对他们有效,但那里的解释并不完整,所以我无法让它为我工作.

我加入"NDK_TOOLCHAIN_VERSION=4.7"Application.mk"LOCAL_CFLAGS += -std=c++11"Android.mk文件中.它仍然没有编译.

在上面的链接中它说:

"确保标准库包含路径(如/android-ndk-r8d/sources/cxx-stl/gnu-libstdc++/4.7/include)在目标设置中."

我如何以及在何处插入?

我也在eclipse IDE中遇到错误(在编译之前在源代码上).我知道我应该定义"__GXX_EXPERIMENTAL_CXX0X__"解决它们,但我只是不知道把它放在哪里.

所以,如果有人能够发布一个答案,并详细解释如何编译和使用C++ 11进行eclipse工作,那就太好了.

c++ gcc smart-pointers android-ndk c++11

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

智能指针不能与Android NDK r8一起使用

我无法弄清楚如何在我的Android项目中使用共享指针.我在Mac OS X上使用最新的Eclipse ADT和Android NDK r8d.

这是我的Android.mk文件中的内容:

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_CPPFLAGS  := -std=c++11
LOCAL_MODULE    := native
LOCAL_SRC_FILES := native.cpp
include $(BUILD_SHARED_LIBRARY)
Run Code Online (Sandbox Code Playgroud)

这是我的Application.mk文件中的内容:

NDK_TOOLCHAIN_VERSION=4.7
APP_STL := stlport_shared
Run Code Online (Sandbox Code Playgroud)

我已经尝试了默认的GCC 4.6,实验4.7和clang3.1工具链.
我试过链接到stlport_sharedgnustl_sharedc ++运行时库.
我已经试过了FLAGS -std=c++11,-std=c++0x-std=gnu++11.

我能够使用lambdas和c ++ 11标准的auto,所以C++ 11标志似乎正在工作.但是,无论何时我尝试使用shared_ptr,weak_ptr或unique_ptr,我都会收到错误'suchandsuch_ptr' is not a member of 'std'

我有#include <memory>我的cpp文件.现在Eclipse告诉我Unresolved inclusion: <memory>,但我得到同样的东西<vector>,<string>并且那些似乎编译和工作正常.

智能指针是否未在Android NDK中包含的工具链中实现?
如果没有,为什么不呢?由于GCC和clang已经支持智能指针很长一段时间了,这意味着我要么丢失一些东西,要么Android开发者因为某些原因禁用了它们.
有线索吗?

c++ gcc smart-pointers android-ndk c++11

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

OpenCV for android示例程序显示错误

我已经下载了用于android的OpenCV项目,与它捆绑在一起的示例项目包含几个错误....只有包含NDK代码的项目才有错误....问题是C++代码显示了很多错误.. .像jstring这样的关键字无法识别..请帮我解决这个问题...提前感谢您的宝贵时间

#include <jni.h>
#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/features2d/features2d.hpp>
#include <vector>

using namespace std;
using namespace cv;

extern "C" {
JNIEXPORT void JNICALL Java_org_opencv_samples_tutorial3_Sample3View_FindFeatures(JNIEnv* env, jobject, jint width, jint height, jbyteArray yuv, jintArray bgra)
{
    jbyte* _yuv  = env->GetByteArrayElements(yuv, 0);
    jint*  _bgra = env->GetIntArrayElements(bgra, 0);

    Mat myuv(height + height/2, width, CV_8UC1, (unsigned char *)_yuv);
    Mat mbgra(height, width, CV_8UC4, (unsigned char *)_bgra);
    Mat mgray(height, width, CV_8UC1, (unsigned char *)_yuv);

    //Please make attention about BGRA byte order
    //ARGB stored in java …
Run Code Online (Sandbox Code Playgroud)

android opencv android-ndk

5
推荐指数
1
解决办法
4628
查看次数

标签 统计

android-ndk ×4

c++ ×3

android ×2

c++11 ×2

gcc ×2

opencv ×2

smart-pointers ×2

eclipse ×1