ez8-co / emock

🐞 下一代C/C++跨平台mock库 (Next generation cross-platform mock library for C/C++)
Apache License 2.0
118 stars 35 forks source link

编译报错,多次定义,编译-用的std=c++11 #1

Open wanghongfucoder opened 5 years ago

wanghongfucoder commented 5 years ago

:在函数‘emock::InvocationMockBuilderGetter emock::mockAPI(std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, char const*)’中: reg_son_log.cpp:(.text+0x4d): emock::InvocationMockBuilderGetter emock::mockAPI(std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, char const) 的多重定义 CMakeFiles/main.dir/main.cpp.o:main.cpp:(.text+0x4d):第一次在此定义 src/libMysrc.a(grammar.cpp.o):在函数‘emock::InvocationMockBuilderGetter emock::mockAPI(std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, char const)’中: grammar.cpp:(.text+0xf1): emock::InvocationMockBuilderGetter emock::mockAPI(std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, char const*) 的多重定义 CMakeFiles/main.dir/main.cpp.o:main.cpp:(.text+0x4d):第一次在此定义 src/libMysrc.a(stonewt.cpp.o):在函数‘emock::InvocationMockBuilderGetter emock::mockAPI(std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, char const)’中: stonewt.cpp:(.text+0x4d): emock::InvocationMockBuilderGetter emock::mockAPI(std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, char const) 的多重定义 CMakeFiles/main.dir/main.cpp.o:main.cpp:(.text+0x4d):第一次在此定义

orca-zhang commented 5 years ago

抱歉,前些日子出去度假了,今天抽空我看一下,初步看是条件编译的问题。

orca-zhang commented 5 years ago

非常抱歉,之前因为加班和其他原因,文档还未及时补全,导致使用手册缺失。 想麻烦问一下,目前是怎么使用的呢,正确姿势只需包含 emock.hpp 即可。

wanghongfucoder commented 5 years ago

是这样的,我先在本地编译成功后,得到静态lib,然后把头文件加入include文件夹下,并在CMakeLists中加入该目录,并且一同将静态lib加入lib目录中,进行链接, . ├── build │   ├── CMakeCache.txt │   ├── CMakeFiles │   ├── cmake_install.cmake │   ├── compile_commands.json │   ├── main │   ├── Makefile │   └── src ├── CMakeLists.txt ├── CplusDemo.code-workspace ├── include │   ├── common.h │   ├── concurrency │   ├── ctrl.h │   ├── emock │   ├── grammar │   ├── gtest │   ├── ios │   ├── json.hpp │   ├── memory │   └── stl ├── lib │   ├── libemock.a │   └── libgtest.so ├── main.cpp ├── README.md ├── src │   ├── CMakeLists.txt │   ├── concurrency │   ├── grammar │   ├── ios │   ├── memory │   ├── stl │   └── string

orca-zhang commented 5 years ago

好的,收到反馈,我也尝试本地复现一下。

orca-zhang commented 2 years ago

如果是在msvc环境下,实在无法很快解决,也可以考虑在编译选项中添加“/FORCE:MULTIPLE”来强制忽略重复定义的错误哈。