Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用rviz链接和编译错误_C++_C++11_Ros_Ogre - Fatal编程技术网

C++ 使用rviz链接和编译错误

C++ 使用rviz链接和编译错误,c++,c++11,ros,ogre,C++,C++11,Ros,Ogre,我试图使用OGRE加载urdf文件,但在编译时遇到了一些问题。下面是我的制作文件 CC = g++ CC_FLAGS = -w -std=c++0x -I/usr/include/OGRE LIBS = -ltbb -lrt -lpthread -lm -ldl -lOgreMain -lboost_system EXEC = run SOURCES = $(wildcard *.cc) OBJECTS = $(SOURCES:.cc=.o) #Main target all: $(OBJ

我试图使用OGRE加载urdf文件,但在编译时遇到了一些问题。下面是我的制作文件

CC = g++
CC_FLAGS = -w -std=c++0x -I/usr/include/OGRE
LIBS = -ltbb -lrt -lpthread -lm -ldl -lOgreMain  -lboost_system

EXEC = run
SOURCES = $(wildcard *.cc)
OBJECTS = $(SOURCES:.cc=.o)

#Main target
all: $(OBJECTS)
     $(CC) $(OBJECTS) -o $(EXEC) $(LIBS)

#To obtain object files
%.o: %.cc
    $(CC) -c $(CC_FLAGS) $< -o $@ $(LIBS)


.PHONY: clean
clean:
    rm -f $(EXEC) $(OBJECTS)
CC=g++
CC_FLAGS=-w-std=c++0x-I/usr/include/OGRE
LIBS=-ltbb-lrt-lpthread-lm-ldl-logremaine-lboost\u系统
EXEC=run
源=$(通配符*.cc)
对象=$(源:.cc=.o)
#主要目标
全部:$(对象)
$(CC)$(对象)-o$(EXEC)$(LIBS)
#获取目标文件的步骤
%.o:%.cc
$(CC)-c$(CC_标志)$<-o$@$(LIBS)
.假冒:干净
清洁:
rm-f$(执行)$(对象)
我得到以下错误:

main.o: In function `addLink(boost::shared_ptr<urdf::Link const>)':
main.cc:(.text+0x535): undefined reference to `rviz::loadMeshFromResource(std::string const&)'
main.o: In function `initModel(char const*)':
main.cc:(.text+0x134e): undefined reference to `urdf::Model::initFile(std::string const&)'
collect2: error: ld returned 1 exit status
make: *** [all] Error 1
main.o:在函数“addLink(boost::shared_ptr)”中:
main.cc:(.text+0x535):对“rviz::loadMeshFromResource(std::string const&)”的未定义引用
main.o:在函数“initModel(char const*)”中:
main.cc:(.text+0x134e):对“urdf::Model::initFile(std::string const&)”的未定义引用
collect2:错误:ld返回了1个退出状态
make:**[all]错误1

关于如何修复它的任何想法。

现在它可以工作了。我添加了-lurdf和-lrviz

CC = g++
CC_FLAGS = -w -std=c++0x -I/usr/include/OGRE -I/opt/ros/indigo/include -I/opt/ros/indigo/include/kdl
LIBS = -ltbb -lrt -lpthread -lm -ldl -lOgreMain -lboost_system -L/opt/ros/indigo/lib -lurdf -lrviz

EXEC = run
SOURCES = $(wildcard *.cc)
OBJECTS = $(SOURCES:.cc=.o)

#Main target  
all: $(OBJECTS)
    $(CC) $(OBJECTS) -o $(EXEC) $(LIBS)

#To obtain object files
%.o: %.cc
    $(CC) -c $(CC_FLAGS) $< -o $@ $(LIBS)

.PHONY: clean
clean: 
    rm -f $(EXEC) $(OBJECTS)
CC=g++
CC_FLAGS=-w-std=c++0x-I/usr/include/OGRE-I/opt/ros/indigo/include-I/opt/ros/indigo/include/kdl
LIBS=-ltbb-lrt-lpthread-lm-ldl-loglevel-lboost_system-L/opt/ros/indigo/lib-lurdf-lrviz
EXEC=run
源=$(通配符*.cc)
对象=$(源:.cc=.o)
#主要目标
全部:$(对象)
$(CC)$(对象)-o$(EXEC)$(LIBS)
#获取目标文件的步骤
%.o:%.cc
$(CC)-c$(CC_标志)$<-o$@$(LIBS)
.假冒:干净
清洁:
rm-f$(执行)$(对象)

“我猜这是链接问题。”当然是。您是否尝试使用
myString.c_str()
调用
urdf::Model::initFile(std::string const&)
?函数签名正确:看起来您缺少链接
urdf
库(存根)的链接。