我正在使用 android NDK 和 OpenCV(版本 2.4.1)。我要做的是分析一个使用opencv作为库的android应用程序(并分析调用opencv的函数)。
我设置了所有环境(android NDK、SDK、openCV 和 openCV for android),但显然无法分析 opencv,因为在 android 中它使用了一堆预构建的库。
我试过这两种方法:
1 - 重新编译 openCV 库,添加 C 标志 -pg
我试图把选项 -pg 但它给了我一个不兼容的错误,所以建议在这里。我纠正了这个错误,把选项 -DENABLE_PROFILING=ON -DOPENCV_LINKER_LIBS=/full/path/to/libandprof.a 但是我得到了这个错误:
[ 0%] 构建 C 对象 3rdparty/libtiff/CMakeFiles/libtiff.dir/tif_aux.co
在 /home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tif_aux.c:32 包含的文件中:/home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tiffiop.h:56:错误:“size_t”之前的预期声明说明符或“...”
/home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tiffiop.h:56:错误:预期的声明说明符或“...”在“size_t”之前
在 /home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tiffiop.h:60 包含的文件中,来自 /home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tif_aux.c:32 :/home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tiffio.h:67: 错误:在 'tmsize_t' 之前需要 '='、','、';'、'asm' 或 ' attribute '
/home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tiffio.h:77:错误:在 'tsize_t' 之前应有 '='、','、';'、'asm' 或 ' attribute '
在 /home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tiffiop.h:60 包含的文件中,来自 /home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tif_aux.c:32 :/home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tiffio.h:275:错误:预期的声明说明符或“*”标记之前的“...”
/home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tiffio.h:275:错误:预期的声明说明符或'tmsize_t'之前的'...'
/home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tiffio.h:275:警告:在“tmsize_t”的声明中,类型默认为“int”
/home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tiffio.h:275:错误:“tmsize_t”声明为函数返回函数
/home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tiffio.h:348:错误:“TIFFScanlineSize”声明为函数返回函数
/home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tiffio.h:350:错误:“TIFFRasterScanlineSize”声明为函数返回函数
/home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tiffio.h:352:错误:“TIFFStripSize”声明为函数返回函数
/home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tiffio.h:354:错误:“TIFFRawStripSize”声明为函数返回函数
/home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tiffio.h:356:错误:“TIFFVStripSize”声明为函数返回函数
/home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tiffio.h:358:错误:“TIFFTileRowSize”声明为函数返回函数
/home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tiffio.h:360:错误:“TIFFTileSize”声明为函数返回函数
/home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tiffio.h:362:错误:“TIFFVtileSize”声明为函数返回函数
/home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tiffio.h:376:错误:在“TIFFGetReadProc”之前需要“=”、“、”、“;”、“asm”或“属性”
/home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tiffio.h:377:错误:预期'=',',',';','asm'或'属性'在'TIFFGetWriteProc'之前/home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tiffio.h:434:错误:预期的声明说明符或'...'之前'TIFFReadWriteProc'/home/bacci/librerie/ OpenCV-2.4.1/3rdparty/libtiff/tiffio.h:434:错误:在“TIFFReadWriteProc”/home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tiffio 之前的预期声明说明符或“...”。 h:452:错误:“TIFFReadTile”声明为函数返回函数/home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tiffio.h:453:错误:“TIFFWriteTile”声明为函数返回函数/ home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tiffio.h:456:错误:“TIFFReadEncodedStrip”声明为函数返回函数/home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/ tiffio.h:457: 错误: 'TIFFReadRawStrip' 声明为函数返回函数 /home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tiffio.h:458:错误:'TIFFReadEncodedTile' 声明为函数返回函数 /home/bacci/librerie/OpenCV -2.4.1/3rdparty/libtiff/tiffio.h:459:错误:“TIFFReadRawTile”声明为函数返回函数/home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tiffio.h:460:错误:“TIFFWriteEncodedStrip”声明为函数返回函数/home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tiffio.h:461:错误:“TIFFWriteRawStrip”声明为函数返回函数/home/bacci/librerie /OpenCV-2.4.1/3rdparty/libtiff/tiffio.h:462:错误:“TIFFWriteEncodedTile”声明为函数返回函数/home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tiffio.h:463 : 错误: 'TIFFWriteRawTile' 声明为返回函数的函数 在 /home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tif_aux.c:32 包含的文件中:/home/bacci/librerie/OpenCV-2.4.1/3rdparty/ libtiff/tiffiop.h:148:错误:字段“tif_tilesize”声明为函数/home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tiffiop.h:171:错误:字段“tif_scanlinesize”声明为函数/home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tiffiop.h:172:错误:字段“tif_scanlineskew”声明为函数/home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff /tiffiop.h:174:错误:字段“tif_rawdatasize”声明为函数/home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tiffiop.h:175:错误:字段“tif_rawdataoff”声明为函数/home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tiffiop.h:176:错误:字段“tif_rawdataloaded”声明为函数/home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tiffiop.h:178:错误:字段“tif_rawcc”声明为函数/home/bacci/librerie/ OpenCV-2.4.1/3rdparty/libtiff/tiffiop.h:181:错误:字段“tif_size”声明为函数/home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tiffiop.h:186:错误:'TIFFReadWriteProc'之前的预期说明符限定符列表在/home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tif_aux.c:33中包含的文件中:/home/bacci/librerie/OpenCV-2.4.1 /3rdparty/libtiff/tif_predict.h:40:错误:字段“步幅”声明为函数 /home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tif_predict.h:41:错误:字段“行大小”声明为函数/home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tif_aux.c:在函数'_TIFFCheckRealloc'中:/home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tif_aux.c:67:错误:函数'bytes'被初始化为变量/home/bacci/librerie/OpenCV-2.4 .1/3rdparty/libtiff/tif_aux.c:67:错误:二进制操作数无效*(有'int()()' 和 'int ( )()') /home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tif_aux.c:72: 错误:二进制 / 的操作数无效(有 'int ( )( )' 和 'int ()()') /home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tif_aux.c:67:错误:嵌套函数“字节”声明但从未定义/home/bacci/librerie/OpenCV-2.4。 1/3rdparty/libtiff/tif_aux.c:在函数“TIFFDefaultTransferFunction”中:/home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tif_aux.c:101:错误:强制转换指定函数类型/home/bacci/ librerie/OpenCV-2.4.1/3rdparty/libtiff/tif_aux.c:102:错误:二进制操作数无效*(有'int(*)()'和'unsigned int')/home/bacci/librerie/OpenCV- 2.4.1/3rdparty/libtiff/tif_aux.c:106:错误:需要左值作为赋值的左操作数/home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tif_aux.c:106:错误:需要左值作为增量操作数/home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tif_aux.c:107:错误:在预期浮点值的地方使用的指针值/home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tif_aux.c:107:错误:在预期浮点值的地方使用的指针值/home/bacci/ librerie/OpenCV-2.4.1/3rdparty/libtiff/tif_aux.c:108:错误:数组下标不是整数/home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tif_aux.c:在函数中' TIFFDefaultRefBlackWhite':/home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tif_aux.c:137:警告:传递'_TIFFmalloc'的参数1使指针从整数而不进行强制转换/home/bacci/librerie/OpenCV -2.4.1/3rdparty/libtiff/tiffio.h:295:注意:预期为“int (*)()”,但参数为“unsigned int”类型在预期浮点值时使用的指针值/home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tif_aux.c:108:错误:数组下标不是整数/home/bacci/librerie/OpenCV- 2.4.1/3rdparty/libtiff/tif_aux.c:在函数“TIFFDefaultRefBlackWhite”中:/home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tif_aux.c:137:警告:传递“_TIFFmalloc”的参数 1从没有强制转换/home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tiffio.h:295 的整数中生成指针:注意:预期为“int (*)()”,但参数的类型为“unsigned int”在预期浮点值时使用的指针值/home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tif_aux.c:108:错误:数组下标不是整数/home/bacci/librerie/OpenCV- 2.4.1/3rdparty/libtiff/tif_aux.c:在函数“TIFFDefaultRefBlackWhite”中:/home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tif_aux.c:137:警告:传递“_TIFFmalloc”的参数 1从没有强制转换/home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tiffio.h:295 的整数中生成指针:注意:预期为“int (*)()”,但参数的类型为“unsigned int”1/3rdparty/libtiff/tif_aux.c:137:警告:传递 '_TIFFmalloc' 的参数 1 使指针从没有强制转换的整数 /home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tiffio.h:295 :注意:预期为“int (*)()”,但参数的类型为“unsigned int”1/3rdparty/libtiff/tif_aux.c:137:警告:传递 '_TIFFmalloc' 的参数 1 使指针从没有强制转换的整数 /home/bacci/librerie/OpenCV-2.4.1/3rdparty/libtiff/tiffio.h:295 :注意:预期为“int (*)()”,但参数的类型为“unsigned int”
make[2]: * [3rdparty/libtiff/CMakeFiles/libtiff.dir/tif_aux.co] 错误 1
制作1:* [3rdparty/libtiff/CMakeFiles/libtiff.dir/all] 错误 2
制作:* [全部] 错误 2
`
2 - 尝试在我的c++ android应用程序(extern C)中集成openCV的一些源代码
这不是一个好的解决方案,因为但是我无法通过程序的所有调用获得一棵真正的树,因为您没有将所有 opencv 源代码集成到我的 jni 文件夹中的应用程序中。
有人可以帮我解决这个问题吗?
谢谢