问:我如何在一个Objective-C可可(OSX,iOS的不)应用的上下文中使用PCL?
撕裂了我的头发在这个one.I不能得到libpcl与在Xcode我的目标C项目正常链接。 我已经检查并重新检查所有我能这么想的。 可能做一些愚蠢的,但我很为难。
实际的错误是链接:
Undefined symbols for architecture x86_64:
"pcl::PassThrough<pcl::PointXYZ>::applyFilterIndices(std::__1::vector<int, std::__1::allocator<int> >&)", referenced from:
pcl::PassThrough<pcl::PointXYZ>::applyFilter(std::__1::vector<int, std::__1::allocator<int> >&) in PCLProcess.o
ld: symbol(s) not found for architecture x86_64
我试图编译的代码是可用的标准教程代码在这里: http://pointclouds.org/documentation/tutorials/passthrough.php#passthrough
我可以得到它没有工作的Xcode(使用cmake和命令行编译究竟在本教程)
我可以创建一个“命令行”项目并编译和使用Xcode的链接一次性CPP文件
问题是相同的,无论我试着什么版本的PCL的。 MacPorts的,二进制发行版,自编1.6和躯干。 所有相同的结果。
我已经尝试了几种不同的机器,OSX 10.7和10.8,同样的问题在两个。
我甚至运行处对dylib核实失踪符号在我链接库(在这种情况下,过滤器)
任何想法非常赞赏,我已经失去了一个星期半到这一点。
见这个截图进行了详细的错误信息。
这是有问题的代码:
//PCLProcess.h
#import <Foundation/Foundation.h>
@interface PCLProcess : NSObject
@end
//PCLProcess.mm
#import "PCLProcess.h"
#include <pcl/point_types.h>
#include <pcl/filters/passthrough.h>
@implementation PCLProcess
-(void)tryThis{
// Code cut and pasted from tutoral (see link above)
}
@end
更新
这是一个更线索。 我在我头上相对于编译器/链接以及它们如何工作,但现在我想我知道发生了什么,但不是为什么(或如何解决它)。
我手动运行该连接器工具,绝望的我开始在废弃的旗帜插上只是为了看看有什么结果。 以前的错误(以上)识别丢失的符号为 “×” PCL ::直通:: applyFilterIndices(STD :: __ 1 ::矢量>&)”,但LD -y给我这样的:
LD:警告:选项-y是过时的,被忽略的建筑x86_64的未定义符号:找不到架构x86_64的符号(S):“__ ZN3pcl11PassThroughINS_8PointXYZEE18applyFilterIndicesERNSt3__16vectorIiNS3_9allocatorIiEEEE”,从引用:__ ZN3pcl11PassThroughINS_8PointXYZEE11applyFilterERNSt3__16vectorIiNS3_9allocatorIiEEEE在PCLProcess.o LD
于是我去寻找那象征,果然,它缺少(或不同):
nm /opt/local/lib/libpcl_filters.dylib | grep __ZN3pcl11PassThroughINS_8PointXYZEE18applyFilterIndices
00000000000a0fa0
T __ZN3pcl11PassThroughINS_8PointXYZEE18applyFilterIndicesERSt6vectorIiSaIiEE
我怀疑名字改编? 但同样,我真的不知道我在说什么关于在此时或者(更重要的),如何解决它。