技术标签: mockcpp 官方实例
Mac OS X上编译mockcpp过程
OS版本:
banxia:mockcpp yangjia$ sw_vers
ProductName: Mac OS X
ProductVersion: 10.14
BuildVersion: 18A391
mockcpp支持cmake,编译步骤如下:
cd mockcpp/mockcpp
cmake .
make
第一次编译错误
用上面的方法编译到InterfaceInfo.cpp时报错:
/Users/yangjia/repos/mockcpp/mockcpp/src/InterfaceInfo.cpp:17:12: error:
unknown type name '__class_type_info'
const __class_type_info* info, unsigned int number);
^
/Users/yangjia/repos/mockcpp/mockcpp/src/InterfaceInfo.cpp:21:43: error:
unknown type name '__base_class_type_info'
getNumberOfVtblsByBaseClassTypeInfo(const __base_class_type_info& info
/Users/yangjia/repos/mockcpp/mockcpp/src/InterfaceInfo.cpp:41:29: error:
unknown type name '__vmi_class_type_info'
getNumberOfVtblsByVmi(const __vmi_class_type_info* vmi, unsigned int number)
难道编译器不支持rtti?
设置cmake的选项CMAKE_VERBOSE_MAKEFILE,让cmake输出编译的详细信息:
set(CMAKE_VERBOSE_MAKEFILE ON)
注意:需要在mockcpp/mockcpp/CMakeLists.txt和mockcpp/mockcpp/src/CMakeLists.txt两个文件都增加这个选项才能生效。
编译输出为:
[ 10%] Building CXX object src/CMakeFiles/mockcpp.dir/InterfaceInfo.cpp.o
cd /Users/yangjia/repos/mockcpp/mockcpp/src && /Library/Developer/CommandLineTools/usr/bin/c++ -DMOCKCPP_ALLOW_MULTI_INHERITANCE=1 -DMOCKCPP_MAX_INHERITANCE=2 -DMOCKCPP_MAX_PARAMETERS=12 -DMOCKCPP_MAX_VTBL_SIZE=20 -DMOCKCPP_NO_NAMESPACE=0 -DPACKAGE=\"mockcpp\" -DPACKAGE_BUGREPORT=\"[email protected]\" -DPACKAGE_NAME=\"mockcpp\" -DPACKAGE_STRING=\"mockcpp\" -DPACKAGE_URL=\"http://code.google.com/p/mockcpp\" -DVERSION=\"2.6\" -I/Users/yangjia/repos/mockcpp/mockcpp/3rdparty -I/Users/yangjia/repos/mockcpp/mockcpp/include -fPIC -o CMakeFiles/mockcpp.dir/InterfaceInfo.cpp.o -c /Users/yangjia/repos/mockcpp/mockcpp/src/InterfaceInfo.cpp
原来用的是xcode自带的clang:
$ /Library/Developer/CommandLineTools/usr/bin/c++ -v
Apple LLVM version 10.0.0 (clang-1000.10.44.4)
Target: x86_64-apple-darwin18.0.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin
果断换成gcc,设置cmake的选项CMAKE_CXX_COMPILER(mockcpp/mockcpp/src/CMakeLists.txt设置即可):
正好用homebrew装了一个7.3.0版本的gcc,就用这个版本了:
SET(CMAKE_CXX_COMPILER /usr/local/bin/g++-7)
第二次编译错误
编译器换成g++后又报错了:
[ 10%] Building CXX object src/CMakeFiles/mockcpp.dir/AfterMatcher.cpp.o
cd /Users/yangjia/repos/mockcpp/mockcpp/src && /usr/local/bin/g++-7 -DMOCKCPP_ALLOW_MULTI_INHERITANCE=1 -DMOCKCPP_MAX_INHERITANCE=2 -DMOCKCPP_MAX_PARAMETERS=12 -DMOCKCPP_MAX_VTBL_SIZE=20 -DMOCKCPP_NO_NAMESPACE=0 -DPACKAGE=\"mockcpp\" -DPACKAGE_BUGREPORT=\"[email protected]\" -DPACKAGE_NAME=\"mockcpp\" -DPACKAGE_STRING=\"mockcpp\" -DPACKAGE_URL=\"http://code.google.com/p/mockcpp\" -DVERSION=\"2.6\" -I/Users/yangjia/repos/mockcpp/mockcpp/3rdparty -I/Users/yangjia/repos/mockcpp/mockcpp/include -fPIC -o CMakeFiles/mockcpp.dir/AfterMatcher.cpp.o -c /Users/yangjia/repos/mockcpp/mockcpp/src/AfterMatcher.cpp
In file included from /Users/yangjia/repos/mockcpp/mockcpp/include/mockcpp/AfterMatcher.h:24:0,
from /Users/yangjia/repos/mockcpp/mockcpp/src/AfterMatcher.cpp:19:
/Users/yangjia/repos/mockcpp/mockcpp/include/mockcpp/mockcpp.h:60:8: error: expected identifier before 'static_assert'
struct static_assert
^~~~~~~~~~~~~
对应的代码如下:
// mockcpp.h
template
struct static_assert
{
typedef int static_assert_failure[condition ? 1 : -1];
};
moclkcpp自己定义了一个static_assert,但是c++11已经引入了static_assert,两者冲突了。一个解决方案是c++11以后就不要编这段代码了:
#if __cplusplus < 201103L
template
struct static_assert
{
typedef int static_assert_failure[condition ? 1 : -1];
};
#endif
用了__cplusplus预编译宏,详细说明见这里
修改后,编译终于通过了。
代码已经放到github上了。
JVM-类加载与字节码技术类结构文件magic版本常量池javap工具图解方法执行流程条件判断指令构造方法cinit 构造方法init 构造方法方法调用多态的原理synchronized编译期处理默认构造器自动拆装箱泛型集合取值可变参数foreach 循环数组循环集合循环switch 字符串try-with-resources方法重写时的桥接方法匿名内部类无引用局部变量引用局部变量类加载阶段加载链接验证准备解析初始化发生的时机类结构文件java程序// HelloWorld 示例public _字节码解释器和类加载
我的系统: Win7 64位 旗舰版本本型号:Thinkpad E450网上买的,当时为了酷(作)炫(死),选择了有指纹识别的功能的版本,多了差不多100左右。但是回来用的时候傻了,因为我常用的管理员账号是不能设置成指纹识别登陆的。会出现如下错误,这样就感觉不是很爽。在更换了各种驱动,搜索了各种方法之后,总结如下:1、右击我的电脑,打开管理-计算机管理(本
from data.uila = torch.tensor([[11, 22, 33], [44, 55, 66], [77, 88, 99], [11, 22, 33], [44, 55, 66], [77, 88, 99], [11, 22, 33], [44, 55, 66], [77, 88, 99], [11, 22, 33], [44, 55, 66], [77, 88, 99]])b = torch.tensor([0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2])_pytorch加载自定义数据集
SuperMap iServer 扩展服务及扩展服务提供者范例一.扩展服务实例 1.将iserver-extend1下的listener.java打成jar包2.复制到D:\SuperMap-iServer\webapps\iserver\WEB-INF\lib ...相同根域名下跨域共享session的解决方案https://code.msdn.microsoft.com/CSASPNETSha..._python.runt ime.dll目录
application.yml 引用pom文件里的数据阿弥陀佛,祈祷没成功,又呲花了控制台输出是banner.txt文件想要设置的可以看下方链接字母数字转换,不支持汉字图片转换仅限网络地址,有条件的可以自己上线自己两个喜欢的图片转换的内容直接粘贴进benner.txt里就行了,注意文件路径,实在resources下。今天遇到的问题先看图片控制台输出内容application.yml文件 logback-spring.xml文件pom文件上述内容的思路大概就是.yml文
前言注意:我们今天所有的一切都是基于 JDK 8,JDK 8 的实现和 JDK 7 有重大区别。前面我们分析了 hashCode 和 hash 算法的原理,其实都是为我们解析 HashMap 做铺垫,因为 HashMap 确实比较复杂(如果你每一行代码都看的话,每个位移都纠结的话),虽然总的来说,HashMap 不过是 Node 数组加 链表和红黑树。但是里面的细节确是无比的优雅和有趣。楼主为什么选
报错内容:ErrorCode=0 SQLState=01S00 The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serve..._jdbc连接时区
A. Sockpuppets转载于:https://www.cnblogs.com/Dup4/p/10133050.html
list.append(obj) 在列表末尾添加新的对象,只接受一个参数,参数可以是任何数据类型,被追加的元素在 list 中保持着原结构类型。list.extend(seq) 在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)严格来说 append 是追加,把一个东西整体添加在列表后,而 extend 是扩展,把一个东西里的所有元素添加在列表后。list.insert(index, obj) 在编号 index 位置插入 obj。list.remove(obj) 移.._python入门函数的意义
IE各个版本和其他浏览器对base标签处理不同。IE无视base标签。IE11也是这样。使用这种通用的方式做跳转就不会出错了(强制使用base标签 :shock: ) [code="java"] var base=document.getElementsByTagName("base"); window.location.href=base[..._js 跳转 兼容
[DllImport("kernel32.dll")] public static extern IntPtr GlobalSize(IntPtr handle); [DllImport("kernel32.dll")] static extern IntPtr GlobalLock(IntPtr hMem);
情况一、这个数字是图片上有的,比如说2010年,我想要改成2011年,那个”1“是图片上有的。那直接导图进PS,然后按一下M 把”1“框起来,然后按V,接下来按住ctrl和alt(一起按,按住别放),拖动那个虚线的框框,移动到那个要修改的”0”上面。好了 完了。情况二、这个数字图片上没有,比如说2012年要改2013年,这个“3”是图片上没有的。那就导图进PS,用情况一的方法将“2”的位置填充成..._ps怎么修改数字