我使用的是c ++ 11,还有一些没有为它配置的库,需要一些类型转换.特别是我需要一种方法转换std::__cxx11::string为常规std::string,但谷歌搜索我找不到一种方法来做到这一点,并放在(string)前面是行不通的.
如果我不转换,我会得到这样的链接器错误:
undefined reference to `H5::CompType::insertMember(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned long, H5::DataType const&) const'
Run Code Online (Sandbox Code Playgroud) 我正在尝试编译一个简单的程序
#include <gtkmm.h>
Run Code Online (Sandbox Code Playgroud)
路径gtkmm.h是/usr/include/gtkmm-2.4/gtkmm.h.除非我特别说明,否则g ++不会看到此文件-I /usr/include/gtkmm-2.4.
我的问题是,如何让g ++自动查看/usr/include其中包含的所有头文件的所有目录的递归,为什么这不是默认操作?
有可能指示g ++以递归方式搜索头文件的文件夹吗?在我的例子中,我想要g ++来搜索
/ ARDrone_SDK_2_0_1/ARDroneLib /柔和/
以及头文件的所有子目录.可以这样做吗?这是一个简单的Makefile例子:
C=g++
CFLAGS=-c -Wall
LDFLAGS=
INC1=/ARDrone_SDK_2_0_1/ARDroneLib/Soft/ <- can this be recursive?
INCDIRS= -I${INC1}
SOURCES=src/dronevid.cpp
OBJECTS=$(SOURCES:.cpp=.o)
EXECUTABLE=build/dronevid
all: $(SOURCES) $(EXECUTABLE)
$(EXECUTABLE): $(OBJECTS)
$(CC) $(LDFLAGS) $(OBJECTS) -o $@
.cpp.o:
$(CC) $(CFLAGS) $(INCDIRS) $< -o $@
Run Code Online (Sandbox Code Playgroud)