Skip to content
This repository has been archived by the owner on Nov 3, 2023. It is now read-only.

多文件include miraiCP.hpp:重复定义 #96

Closed
Antares0982 opened this issue Oct 21, 2021 · 11 comments
Closed

多文件include miraiCP.hpp:重复定义 #96

Antares0982 opened this issue Oct 21, 2021 · 11 comments
Labels
p: high 优先级:高 t: bug 类型:bug

Comments

@Antares0982
Copy link
Collaborator

使用多个文件编写时,多个文件均include miraiCP.hpp会报错。是否应将header-only头文件声明放在最前,用一个#ifdef XXX包住定义,防止多文件include时出现问题?

复现步骤:解压release miraiCP_CPP.zip,新增文件demo2.cpp,写入以下内容:

#include <miraiCP.hpp>
class testing
{
};

修改cmakelist:删掉test,并加入demo2.cpp

# 以utf8编译
add_compile_options("$<$<C_COMPILER_ID:MSVC>:/utf-8>")
add_compile_options("$<$<CXX_COMPILER_ID:MSVC>:/utf-8>")
# 最低cmake版本
cmake_minimum_required(VERSION 3.5)
# 声明C++项目
project(MiraiCP LANGUAGES CXX)
# C++ 标准20
set(CMAKE_CXX_STANDARD 17)
# 在64位编译
set(BUILD_USE_64BITS on)
# 构建动态链接库, 第一行是target name不能改, 第二行是表明为动态链接库,也不用改,demo.cpp是处理的cpp,可以改名字,然后要添加你依赖的文件进去。
add_library(
        MiraiCP
        SHARED
        demo.cpp
        demo2.cpp)
# 设置输出的dll文件的名字(最后一个参数),目前是MiraiCP.dll
set_target_properties(MiraiCP PROPERTIES OUTPUT_NAME MiraiCP)

# 增加MiraiCP依赖
add_subdirectory(include)

shell执行

> cmake .
-- FOUND JNI IN /usr/lib/jvm/jdk-16.0.2/include
-- Configuring done
-- Generating done
-- Build files have been written to: /home/antares/test/miraiCP

> make

Screenshots 相关代码和日志

> make
Consolidate compiler generated dependencies of target MiraiCP
[ 33%] Building CXX object CMakeFiles/MiraiCP.dir/demo2.cpp.o
[ 66%] Linking CXX shared library libMiraiCP.so
/usr/bin/ld: CMakeFiles/MiraiCP.dir/demo2.cpp.o:(.bss+0x0): multiple definition of `MiraiCP::gvm'; CMakeFiles/MiraiCP.dir/demo.cpp.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/MiraiCP.dir/demo2.cpp.o:(.bss+0x8): multiple definition of `MiraiCP::JNIVersion'; CMakeFiles/MiraiCP.dir/demo.cpp.o:(.bss+0x8): first defined here
/usr/bin/ld: CMakeFiles/MiraiCP.dir/demo2.cpp.o:(.bss+0x20): multiple definition of `MiraiCP::ThreadManager::threads[abi:cxx11]'; CMakeFiles/MiraiCP.dir/demo.cpp.o:(.bss+0x20): first defined here
/usr/bin/ld: CMakeFiles/MiraiCP.dir/demo2.cpp.o:(.data+0x0): multiple definition of `MiraiCP::ThreadManager::mtx'; CMakeFiles/MiraiCP.dir/demo.cpp.o:(.data+0x0): first defined here
/usr/bin/ld: CMakeFiles/MiraiCP.dir/demo2.cpp.o:(.bss+0x50): multiple definition of `MiraiCP::Config::CPP_lib'; CMakeFiles/MiraiCP.dir/demo.cpp.o:(.bss+0x50): first defined here
/usr/bin/ld: CMakeFiles/MiraiCP.dir/demo2.cpp.o:(.bss+0x58): multiple definition of `MiraiCP::Config::KOperation'; CMakeFiles/MiraiCP.dir/demo.cpp.o:(.bss+0x58): first defined here
/usr/bin/ld: CMakeFiles/MiraiCP.dir/demo2.cpp.o:(.bss+0x60): multiple definition of `MiraiCP::Logger::logger'; CMakeFiles/MiraiCP.dir/demo.cpp.o:(.bss+0x60): first defined here
/usr/bin/ld: CMakeFiles/MiraiCP.dir/demo2.cpp.o:(.bss+0x98): multiple definition of `MiraiCP::CPPPlugin::pluginLogger'; CMakeFiles/MiraiCP.dir/demo.cpp.o:(.bss+0x98): first defined here
/usr/bin/ld: CMakeFiles/MiraiCP.dir/demo2.cpp.o:(.bss+0xa0): multiple definition of `MiraiCP::plugin'; CMakeFiles/MiraiCP.dir/demo.cpp.o:(.bss+0xa0): first defined here
/usr/bin/ld: CMakeFiles/MiraiCP.dir/demo2.cpp.o: in function `MiraiCP::ThreadManager::getEnv(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)':
demo2.cpp:(.text+0x8f4): multiple definition of `MiraiCP::ThreadManager::getEnv(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'; CMakeFiles/MiraiCP.dir/demo.cpp.o:demo.cpp:(.text+0x8f4): first defined here
/usr/bin/ld: CMakeFiles/MiraiCP.dir/demo2.cpp.o: in function `MiraiCP::Logger_interface::error(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool, JNIEnv_*)':
demo2.cpp:(.text+0xb46): multiple definition of `MiraiCP::Logger_interface::error(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool, JNIEnv_*)'; CMakeFiles/MiraiCP.dir/demo.cpp.o:demo.cpp:(.text+0xb46): first defined here
/usr/bin/ld: CMakeFiles/MiraiCP.dir/demo2.cpp.o:(.bss+0xc0): multiple definition of `MiraiCP::SingleMessage::messageType[abi:cxx11]'; CMakeFiles/MiraiCP.dir/demo.cpp.o:(.bss+0xc0): first defined here
/usr/bin/ld: CMakeFiles/MiraiCP.dir/demo2.cpp.o: in function `MiraiCP::Tools::escapeToMiraiCode(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)':
demo2.cpp:(.text+0xb664): multiple definition of `MiraiCP::Tools::escapeToMiraiCode(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'; CMakeFiles/MiraiCP.dir/demo.cpp.o:demo.cpp:(.text+0xb664): first defined here
/usr/bin/ld: CMakeFiles/MiraiCP.dir/demo2.cpp.o: in function `MiraiCP::Config::koperation(MiraiCP::Config::operation_set, nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> > >&, JNIEnv_*, bool, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)':
demo2.cpp:(.text+0x1a38): multiple definition of `MiraiCP::Config::koperation(MiraiCP::Config::operation_set, nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> > >&, JNIEnv_*, bool, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'; CMakeFiles/MiraiCP.dir/demo.cpp.o:demo.cpp:(.text+0x1a38): first defined here
/usr/bin/ld: CMakeFiles/MiraiCP.dir/demo2.cpp.o: in function `MiraiCP::Member::getPermission(JNIEnv_*)':
demo2.cpp:(.text+0x5d4e): multiple definition of `MiraiCP::Member::getPermission(JNIEnv_*)'; CMakeFiles/MiraiCP.dir/demo.cpp.o:demo.cpp:(.text+0x5d4e): first defined here
/usr/bin/ld: CMakeFiles/MiraiCP.dir/demo2.cpp.o: in function `MiraiCP::schedule(long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, JNIEnv_*)':
demo2.cpp:(.text+0x1f): multiple definition of `MiraiCP::schedule(long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, JNIEnv_*)'; CMakeFiles/MiraiCP.dir/demo.cpp.o:demo.cpp:(.text+0x1f): first defined here
/usr/bin/ld: CMakeFiles/MiraiCP.dir/demo2.cpp.o:(.bss+0x100): multiple definition of `MiraiCP::Event::processor'; CMakeFiles/MiraiCP.dir/demo.cpp.o:(.bss+0x100): first defined here
/usr/bin/ld: CMakeFiles/MiraiCP.dir/demo2.cpp.o: in function `MiraiCP::ThreadManager::setEnv(JNIEnv_*)':
demo2.cpp:(.text+0x1ee): multiple definition of `MiraiCP::ThreadManager::setEnv(JNIEnv_*)'; CMakeFiles/MiraiCP.dir/demo.cpp.o:demo.cpp:(.text+0x1ee): first defined here
/usr/bin/ld: CMakeFiles/MiraiCP.dir/demo2.cpp.o: in function `MiraiCP::ThreadManager::included(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)':
demo2.cpp:(.text+0x89c): multiple definition of `MiraiCP::ThreadManager::included(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'; CMakeFiles/MiraiCP.dir/demo.cpp.o:demo.cpp:(.text+0x89c): first defined here
/usr/bin/ld: CMakeFiles/MiraiCP.dir/demo2.cpp.o: in function `MiraiCP::ThreadManager::newEnv(char const*)':
demo2.cpp:(.text+0x406): multiple definition of `MiraiCP::ThreadManager::newEnv(char const*)'; CMakeFiles/MiraiCP.dir/demo.cpp.o:demo.cpp:(.text+0x406): first defined here
/usr/bin/ld: CMakeFiles/MiraiCP.dir/demo2.cpp.o: in function `MiraiCP::Logger_interface::info(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, JNIEnv_*)':
demo2.cpp:(.text+0xcee): multiple definition of `MiraiCP::Logger_interface::info(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, JNIEnv_*)'; CMakeFiles/MiraiCP.dir/demo.cpp.o:demo.cpp:(.text+0xcee): first defined here
/usr/bin/ld: CMakeFiles/MiraiCP.dir/demo2.cpp.o: in function `MiraiCP::ThreadManager::detach()':
demo2.cpp:(.text+0x756): multiple definition of `MiraiCP::ThreadManager::detach()'; CMakeFiles/MiraiCP.dir/demo.cpp.o:demo.cpp:(.text+0x756): first defined here
/usr/bin/ld: CMakeFiles/MiraiCP.dir/demo2.cpp.o: in function `MiraiCP::Logger_interface::init(JNIEnv_*)':
demo2.cpp:(.text+0xac8): multiple definition of `MiraiCP::Logger_interface::init(JNIEnv_*)'; CMakeFiles/MiraiCP.dir/demo.cpp.o:demo.cpp:(.text+0xac8): first defined here
/usr/bin/ld: CMakeFiles/MiraiCP.dir/demo2.cpp.o: in function `MiraiCP::Logger_interface::warning(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, JNIEnv_*)':
demo2.cpp:(.text+0xb0a): multiple definition of `MiraiCP::Logger_interface::warning(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, JNIEnv_*)'; CMakeFiles/MiraiCP.dir/demo.cpp.o:demo.cpp:(.text+0xb0a): first defined here
/usr/bin/ld: CMakeFiles/MiraiCP.dir/demo2.cpp.o: in function `MiraiCP::Logger::log0(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int, JNIEnv_*)':
demo2.cpp:(.text+0xd2a): multiple definition of `MiraiCP::Logger::log0(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int, JNIEnv_*)'; CMakeFiles/MiraiCP.dir/demo.cpp.o:demo.cpp:(.text+0xd2a): first defined here
/usr/bin/ld: CMakeFiles/MiraiCP.dir/demo2.cpp.o: in function `MiraiCP::Tools::str2jstring(char const*, JNIEnv_*)':
demo2.cpp:(.text+0xa966): multiple definition of `MiraiCP::Tools::str2jstring(char const*, JNIEnv_*)'; CMakeFiles/MiraiCP.dir/demo.cpp.o:demo.cpp:(.text+0xa966): first defined here
/usr/bin/ld: CMakeFiles/MiraiCP.dir/demo2.cpp.o: in function `MiraiCP::IdLogger::log0(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int, JNIEnv_*)':
demo2.cpp:(.text+0x108a): multiple definition of `MiraiCP::IdLogger::log0(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int, JNIEnv_*)'; CMakeFiles/MiraiCP.dir/demo.cpp.o:demo.cpp:(.text+0x108a): first defined here
/usr/bin/ld: CMakeFiles/MiraiCP.dir/demo2.cpp.o: in function `MiraiCP::PluginLogger::log0(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int, JNIEnv_*)':
demo2.cpp:(.text+0x13e4): multiple definition of `MiraiCP::PluginLogger::log0(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int, JNIEnv_*)'; CMakeFiles/MiraiCP.dir/demo.cpp.o:demo.cpp:(.text+0x13e4): first defined here
/usr/bin/ld: CMakeFiles/MiraiCP.dir/demo2.cpp.o: in function `MiraiCP::Config::construct(JNIEnv_*)':
demo2.cpp:(.text+0x17b8): multiple definition of `MiraiCP::Config::construct(JNIEnv_*)'; CMakeFiles/MiraiCP.dir/demo.cpp.o:demo.cpp:(.text+0x17b8): first defined here
/usr/bin/ld: CMakeFiles/MiraiCP.dir/demo2.cpp.o: in function `MiraiCP::Config::destruct()':
demo2.cpp:(.text+0x1912): multiple definition of `MiraiCP::Config::destruct()'; CMakeFiles/MiraiCP.dir/demo.cpp.o:demo.cpp:(.text+0x1912): first defined here
/usr/bin/ld: CMakeFiles/MiraiCP.dir/demo2.cpp.o: in function `MiraiCP::Tools::jstring2str[abi:cxx11](_jstring*, JNIEnv_*)':
demo2.cpp:(.text+0xa41c): multiple definition of `MiraiCP::Tools::jstring2str[abi:cxx11](_jstring*, JNIEnv_*)'; CMakeFiles/MiraiCP.dir/demo.cpp.o:demo.cpp:(.text+0xa41c): first defined here
/usr/bin/ld: CMakeFiles/MiraiCP.dir/demo2.cpp.o: in function `MiraiCP::Event::~Event()':
demo2.cpp:(.text+0x1c44): multiple definition of `MiraiCP::Event::~Event()'; CMakeFiles/MiraiCP.dir/demo.cpp.o:demo.cpp:(.text+0x1c44): first defined here
/usr/bin/ld: CMakeFiles/MiraiCP.dir/demo2.cpp.o: in function `MiraiCP::Event::~Event()':
demo2.cpp:(.text+0x1c44): multiple definition of `MiraiCP::Event::~Event()'; CMakeFiles/MiraiCP.dir/demo.cpp.o:demo.cpp:(.text+0x1c44): first defined here
/usr/bin/ld: CMakeFiles/MiraiCP.dir/demo2.cpp.o: in function `MiraiCP::MessageSource::recall(JNIEnv_*) const':
demo2.cpp:(.text+0x1d9a): multiple definition of `MiraiCP::MessageSource::recall(JNIEnv_*) const'; CMakeFiles/MiraiCP.dir/demo.cpp.o:demo.cpp:(.text+0x1d9a): first defined here
/usr/bin/ld: CMakeFiles/MiraiCP.dir/demo2.cpp.o: in function `MiraiCP::MessageSource::serializeToString[abi:cxx11]() const':
demo2.cpp:(.text+0x210e): multiple definition of `MiraiCP::MessageSource::serializeToString[abi:cxx11]() const'; CMakeFiles/MiraiCP.dir/demo.cpp.o:demo.cpp:(.text+0x210e): first defined here
/usr/bin/ld: CMakeFiles/MiraiCP.dir/demo2.cpp.o: in function `MiraiCP::MessageSource::MessageSource(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)':
demo2.cpp:(.text+0x2094): multiple definition of `MiraiCP::MessageSource::MessageSource(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'; CMakeFiles/MiraiCP.dir/demo.cpp.o:demo.cpp:(.text+0x2094): first defined here
/usr/bin/ld: CMakeFiles/MiraiCP.dir/demo2.cpp.o: in function `MiraiCP::MessageSource::MessageSource(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)':
demo2.cpp:(.text+0x2094): multiple definition of `MiraiCP::MessageSource::MessageSource(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'; CMakeFiles/MiraiCP.dir/demo.cpp.o:demo.cpp:(.text+0x2094): first defined here
/usr/bin/ld: CMakeFiles/MiraiCP.dir/demo2.cpp.o: in function `MiraiCP::MessageSource::deserializeFromString(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)':
demo2.cpp:(.text+0x213c): multiple definition of `MiraiCP::MessageSource::deserializeFromString(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'; CMakeFiles/MiraiCP.dir/demo.cpp.o:demo.cpp:(.text+0x213c): first defined here
/usr/bin/ld: CMakeFiles/MiraiCP.dir/demo2.cpp.o: in function `MiraiCP::MessageChain::filter(int)':
demo2.cpp:(.text+0x27c6): multiple definition of `MiraiCP::MessageChain::filter(int)'; CMakeFiles/MiraiCP.dir/demo.cpp.o:demo.cpp:(.text+0x27c6): first defined here
/usr/bin/ld: CMakeFiles/MiraiCP.dir/demo2.cpp.o: in function `MiraiCP::MessageChain::filter(std::function<bool (MiraiCP::SingleMessage)>)':
demo2.cpp:(.text+0x28f0): multiple definition of `MiraiCP::MessageChain::filter(std::function<bool (MiraiCP::SingleMessage)>)'; CMakeFiles/MiraiCP.dir/demo.cpp.o:demo.cpp:(.text+0x28f0): first defined here
/usr/bin/ld: CMakeFiles/MiraiCP.dir/demo2.cpp.o: in function `MiraiCP::MessageChain::first(int)':
demo2.cpp:(.text+0x2988): multiple definition of `MiraiCP::MessageChain::first(int)'; CMakeFiles/MiraiCP.dir/demo.cpp.o:demo.cpp:(.text+0x2988): first defined here
/usr/bin/ld: CMakeFiles/MiraiCP.dir/demo2.cpp.o: in function `MiraiCP::RemoteFile::deserializeFromString(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)':
demo2.cpp:(.text+0x2c0e): multiple definition of `MiraiCP::RemoteFile::deserializeFromString(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'; CMakeFiles/MiraiCP.dir/demo.cpp.o:demo.cpp:(.text+0x2c0e): first defined here
/usr/bin/ld: CMakeFiles/MiraiCP.dir/demo2.cpp.o: in function `MiraiCP::RemoteFile::serializeToString[abi:cxx11]()':
demo2.cpp:(.text+0x3ac8): multiple definition of `MiraiCP::RemoteFile::serializeToString[abi:cxx11]()'; CMakeFiles/MiraiCP.dir/demo.cpp.o:demo.cpp:(.text+0x3ac8): first defined here
/usr/bin/ld: CMakeFiles/MiraiCP.dir/demo2.cpp.o: in function `MiraiCP::ForwardMessage::sendTo(MiraiCP::Contact*, JNIEnv_*)':
demo2.cpp:(.text+0x4088): multiple definition of `MiraiCP::ForwardMessage::sendTo(MiraiCP::Contact*, JNIEnv_*)'; CMakeFiles/MiraiCP.dir/demo.cpp.o:demo.cpp:(.text+0x4088): first defined here
/usr/bin/ld: CMakeFiles/MiraiCP.dir/demo2.cpp.o: in function `MiraiCP::ForwardMessage::ForwardMessage(MiraiCP::Contact*, std::initializer_list<MiraiCP::ForwardNode>)':
demo2.cpp:(.text+0x44d8): multiple definition of `MiraiCP::ForwardMessage::ForwardMessage(MiraiCP::Contact*, std::initializer_list<MiraiCP::ForwardNode>)'; CMakeFiles/MiraiCP.dir/demo.cpp.o:demo.cpp:(.text+0x44d8): first defined here
/usr/bin/ld: CMakeFiles/MiraiCP.dir/demo2.cpp.o: in function `MiraiCP::ForwardMessage::ForwardMessage(MiraiCP::Contact*, std::initializer_list<MiraiCP::ForwardNode>)':
demo2.cpp:(.text+0x44d8): multiple definition of `MiraiCP::ForwardMessage::ForwardMessage(MiraiCP::Contact*, std::initializer_list<MiraiCP::ForwardNode>)'; CMakeFiles/MiraiCP.dir/demo.cpp.o:demo.cpp:(.text+0x44d8): first defined here
/usr/bin/ld: CMakeFiles/MiraiCP.dir/demo2.cpp.o: in function `MiraiCP::Image::Image(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)':
demo2.cpp:(.text+0x497e): multiple definition of `MiraiCP::Image::Image(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'; CMakeFiles/MiraiCP.dir/demo.cpp.o:demo.cpp:(.text+0x497e): first defined here
/usr/bin/ld: CMakeFiles/MiraiCP.dir/demo2.cpp.o: in function `MiraiCP::Image::Image(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)':
demo2.cpp:(.text+0x497e): multiple definition of `MiraiCP::Image::Image(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'; CMakeFiles/MiraiCP.dir/demo.cpp.o:demo.cpp:(.text+0x497e): first defined here
/usr/bin/ld: CMakeFiles/MiraiCP.dir/demo2.cpp.o: in function `MiraiCP::Image::queryURL[abi:cxx11](JNIEnv_*)':
demo2.cpp:(.text+0x4aa0): multiple definition of `MiraiCP::Image::queryURL[abi:cxx11](JNIEnv_*)'; CMakeFiles/MiraiCP.dir/demo.cpp.o:demo.cpp:(.text+0x4aa0): first defined here
/usr/bin/ld: CMakeFiles/MiraiCP.dir/demo2.cpp.o: in function `MiraiCP::Image::toMiraiCode[abi:cxx11]()':
demo2.cpp:(.text+0x4cc6): multiple definition of `MiraiCP::Image::toMiraiCode[abi:cxx11]()'; CMakeFiles/MiraiCP.dir/demo.cpp.o:demo.cpp:(.text+0x4cc6): first defined here
/usr/bin/ld: CMakeFiles/MiraiCP.dir/demo2.cpp.o: in function `MiraiCP::MessageSource::quoteAndSendMiraiCode(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned long long, JNIEnv_*) const':
demo2.cpp:(.text+0x4d96): multiple definition of `MiraiCP::MessageSource::quoteAndSendMiraiCode(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned long long, JNIEnv_*) const'; CMakeFiles/MiraiCP.dir/demo.cpp.o:demo.cpp:(.text+0x4d96): first defined here
/usr/bin/ld: CMakeFiles/MiraiCP.dir/demo2.cpp.o: in function `MiraiCP::MessageSource::quoteAndSendMsg(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned long long, JNIEnv_*)':
demo2.cpp:(.text+0x5172): multiple definition of `MiraiCP::MessageSource::quoteAndSendMsg(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned long long, JNIEnv_*)'; CMakeFiles/MiraiCP.dir/demo.cpp.o:demo.cpp:(.text+0x5172): first defined here
/usr/bin/ld: CMakeFiles/MiraiCP.dir/demo2.cpp.o: in function `MiraiCP::Contact::sendMsg0(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int, bool, JNIEnv_*)':
demo2.cpp:(.text+0x554e): multiple definition of `MiraiCP::Contact::sendMsg0(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int, bool, JNIEnv_*)'; CMakeFiles/MiraiCP.dir/demo.cpp.o:demo.cpp:(.text+0x554e): first defined here
/usr/bin/ld: CMakeFiles/MiraiCP.dir/demo2.cpp.o: in function `MiraiCP::Contact::uploadImg(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, JNIEnv_*)':
demo2.cpp:(.text+0x5aa4): multiple definition of `MiraiCP::Contact::uploadImg(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, JNIEnv_*)'; CMakeFiles/MiraiCP.dir/demo.cpp.o:demo.cpp:(.text+0x5aa4): first defined here
/usr/bin/ld: CMakeFiles/MiraiCP.dir/demo2.cpp.o: in function `MiraiCP::Friend::Friend(unsigned long long, unsigned long long, JNIEnv_*)':
demo2.cpp:(.text+0x5c0c): multiple definition of `MiraiCP::Friend::Friend(unsigned long long, unsigned long long, JNIEnv_*)'; CMakeFiles/MiraiCP.dir/demo.cpp.o:demo.cpp:(.text+0x5c0c): first defined here
/usr/bin/ld: CMakeFiles/MiraiCP.dir/demo2.cpp.o: in function `MiraiCP::Friend::Friend(unsigned long long, unsigned long long, JNIEnv_*)':
demo2.cpp:(.text+0x5c0c): multiple definition of `MiraiCP::Friend::Friend(unsigned long long, unsigned long long, JNIEnv_*)'; CMakeFiles/MiraiCP.dir/demo.cpp.o:demo.cpp:(.text+0x5c0c): first defined here
/usr/bin/ld: CMakeFiles/MiraiCP.dir/demo2.cpp.o: in function `MiraiCP::Member::Member(unsigned long long, unsigned long long, unsigned long long, JNIEnv_*)':
demo2.cpp:(.text+0x5c9c): multiple definition of `MiraiCP::Member::Member(unsigned long long, unsigned long long, unsigned long long, JNIEnv_*)'; CMakeFiles/MiraiCP.dir/demo.cpp.o:demo.cpp:(.text+0x5c9c): first defined here
/usr/bin/ld: CMakeFiles/MiraiCP.dir/demo2.cpp.o: in function `MiraiCP::Member::Member(unsigned long long, unsigned long long, unsigned long long, JNIEnv_*)':
demo2.cpp:(.text+0x5c9c): multiple definition of `MiraiCP::Member::Member(unsigned long long, unsigned long long, unsigned long long, JNIEnv_*)'; CMakeFiles/MiraiCP.dir/demo.cpp.o:demo.cpp:(.text+0x5c9c): first defined here
/usr/bin/ld: CMakeFiles/MiraiCP.dir/demo2.cpp.o: in function `MiraiCP::Member::mute(int, JNIEnv_*)':
demo2.cpp:(.text+0x5f2e): multiple definition of `MiraiCP::Member::mute(int, JNIEnv_*)'; CMakeFiles/MiraiCP.dir/demo.cpp.o:demo.cpp:(.text+0x5f2e): first defined here
/usr/bin/ld: CMakeFiles/MiraiCP.dir/demo2.cpp.o: in function `MiraiCP::Member::kick(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, JNIEnv_*)':
demo2.cpp:(.text+0x6256): multiple definition of `MiraiCP::Member::kick(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, JNIEnv_*)'; CMakeFiles/MiraiCP.dir/demo.cpp.o:demo.cpp:(.text+0x6256): first defined here
/usr/bin/ld: CMakeFiles/MiraiCP.dir/demo2.cpp.o: in function `MiraiCP::Member::modifyAdmin(bool, JNIEnv_*)':
demo2.cpp:(.text+0x6520): multiple definition of `MiraiCP::Member::modifyAdmin(bool, JNIEnv_*)'; CMakeFiles/MiraiCP.dir/demo.cpp.o:demo.cpp:(.text+0x6520): first defined here
/usr/bin/ld: CMakeFiles/MiraiCP.dir/demo2.cpp.o: in function `MiraiCP::Group::Group(unsigned long long, unsigned long long, JNIEnv_*)':
demo2.cpp:(.text+0x67fc): multiple definition of `MiraiCP::Group::Group(unsigned long long, unsigned long long, JNIEnv_*)'; CMakeFiles/MiraiCP.dir/demo.cpp.o:demo.cpp:(.text+0x67fc): first defined here
/usr/bin/ld: CMakeFiles/MiraiCP.dir/demo2.cpp.o: in function `MiraiCP::Group::Group(unsigned long long, unsigned long long, JNIEnv_*)':
demo2.cpp:(.text+0x67fc): multiple definition of `MiraiCP::Group::Group(unsigned long long, unsigned long long, JNIEnv_*)'; CMakeFiles/MiraiCP.dir/demo.cpp.o:demo.cpp:(.text+0x67fc): first defined here
/usr/bin/ld: CMakeFiles/MiraiCP.dir/demo2.cpp.o: in function `MiraiCP::Group::OnlineAnnouncement::deleteThis()':
demo2.cpp:(.text+0x68ac): multiple definition of `MiraiCP::Group::OnlineAnnouncement::deleteThis()'; CMakeFiles/MiraiCP.dir/demo.cpp.o:demo.cpp:(.text+0x68ac): first defined here
/usr/bin/ld: CMakeFiles/MiraiCP.dir/demo2.cpp.o: in function `MiraiCP::Group::AnnouncementParams::serializeToJson[abi:cxx11]()':
demo2.cpp:(.text+0x6fc8): multiple definition of `MiraiCP::Group::AnnouncementParams::serializeToJson[abi:cxx11]()'; CMakeFiles/MiraiCP.dir/demo.cpp.o:demo.cpp:(.text+0x6fc8): first defined here
/usr/bin/ld: CMakeFiles/MiraiCP.dir/demo2.cpp.o: in function `MiraiCP::Group::OfflineAnnouncement::publishTo(MiraiCP::Group const&)':
demo2.cpp:(.text+0x71f8): multiple definition of `MiraiCP::Group::OfflineAnnouncement::publishTo(MiraiCP::Group const&)'; CMakeFiles/MiraiCP.dir/demo.cpp.o:demo.cpp:(.text+0x71f8): first defined here
/usr/bin/ld: CMakeFiles/MiraiCP.dir/demo2.cpp.o: in function `MiraiCP::Group::OnlineAnnouncement::deserializeFromJson(nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> > >)':
demo2.cpp:(.text+0x79a2): multiple definition of `MiraiCP::Group::OnlineAnnouncement::deserializeFromJson(nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> > >)'; CMakeFiles/MiraiCP.dir/demo.cpp.o:demo.cpp:(.text+0x79a2): first defined here
/usr/bin/ld: CMakeFiles/MiraiCP.dir/demo2.cpp.o: in function `MiraiCP::Group::updateSetting(JNIEnv_*)':
demo2.cpp:(.text+0x7d0e): multiple definition of `MiraiCP::Group::updateSetting(JNIEnv_*)'; CMakeFiles/MiraiCP.dir/demo.cpp.o:demo.cpp:(.text+0x7d0e): first defined here
/usr/bin/ld: CMakeFiles/MiraiCP.dir/demo2.cpp.o: in function `MiraiCP::Group::sendFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, JNIEnv_*)':
demo2.cpp:(.text+0x826e): multiple definition of `MiraiCP::Group::sendFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, JNIEnv_*)'; CMakeFiles/MiraiCP.dir/demo.cpp.o:demo.cpp:(.text+0x826e): first defined here
/usr/bin/ld: CMakeFiles/MiraiCP.dir/demo2.cpp.o: in function `MiraiCP::Group::getFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, JNIEnv_*)':
demo2.cpp:(.text+0x87b8): multiple definition of `MiraiCP::Group::getFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, JNIEnv_*)'; CMakeFiles/MiraiCP.dir/demo.cpp.o:demo.cpp:(.text+0x87b8): first defined here
/usr/bin/ld: CMakeFiles/MiraiCP.dir/demo2.cpp.o: in function `MiraiCP::Group::getOwner(JNIEnv_*)':
demo2.cpp:(.text+0x8bc6): multiple definition of `MiraiCP::Group::getOwner(JNIEnv_*)'; CMakeFiles/MiraiCP.dir/demo.cpp.o:demo.cpp:(.text+0x8bc6): first defined here
/usr/bin/ld: CMakeFiles/MiraiCP.dir/demo2.cpp.o: in function `MiraiCP::Group::getFileListString(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, JNIEnv_*)':
demo2.cpp:(.text+0x8f04): multiple definition of `MiraiCP::Group::getFileListString(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, JNIEnv_*)'; CMakeFiles/MiraiCP.dir/demo.cpp.o:demo.cpp:(.text+0x8f04): first defined here
/usr/bin/ld: CMakeFiles/MiraiCP.dir/demo2.cpp.o: in function `MiraiCP::Group::getFileList(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, JNIEnv_*)':
demo2.cpp:(.text+0x9220): multiple definition of `MiraiCP::Group::getFileList(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, JNIEnv_*)'; CMakeFiles/MiraiCP.dir/demo.cpp.o:demo.cpp:(.text+0x9220): first defined here
/usr/bin/ld: CMakeFiles/MiraiCP.dir/demo2.cpp.o: in function `MiraiCP::PrivateMessageEvent::nextMessage(long, bool, JNIEnv_*)':
demo2.cpp:(.text+0x94e0): multiple definition of `MiraiCP::PrivateMessageEvent::nextMessage(long, bool, JNIEnv_*)'; CMakeFiles/MiraiCP.dir/demo.cpp.o:demo.cpp:(.text+0x94e0): first defined here
/usr/bin/ld: CMakeFiles/MiraiCP.dir/demo2.cpp.o: in function `MiraiCP::GroupMessageEvent::nextMessage(long, bool, JNIEnv_*)':
demo2.cpp:(.text+0x99f4): multiple definition of `MiraiCP::GroupMessageEvent::nextMessage(long, bool, JNIEnv_*)'; CMakeFiles/MiraiCP.dir/demo.cpp.o:demo.cpp:(.text+0x99f4): first defined here
/usr/bin/ld: CMakeFiles/MiraiCP.dir/demo2.cpp.o: in function `MiraiCP::GroupMessageEvent::senderNextMessage(long, bool, JNIEnv_*)':
demo2.cpp:(.text+0x9f08): multiple definition of `MiraiCP::GroupMessageEvent::senderNextMessage(long, bool, JNIEnv_*)'; CMakeFiles/MiraiCP.dir/demo.cpp.o:demo.cpp:(.text+0x9f08): first defined here
/usr/bin/ld: CMakeFiles/MiraiCP.dir/demo2.cpp.o: in function `MiraiCP::Tools::StringToVector(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)':
demo2.cpp:(.text+0xad02): multiple definition of `MiraiCP::Tools::StringToVector(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'; CMakeFiles/MiraiCP.dir/demo.cpp.o:demo.cpp:(.text+0xad02): first defined here
/usr/bin/ld: CMakeFiles/MiraiCP.dir/demo2.cpp.o: in function `MiraiCP::Tools::escapeFromMiraiCode(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)':
demo2.cpp:(.text+0xb04a): multiple definition of `MiraiCP::Tools::escapeFromMiraiCode(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'; CMakeFiles/MiraiCP.dir/demo.cpp.o:demo.cpp:(.text+0xb04a): first defined here
/usr/bin/ld: CMakeFiles/MiraiCP.dir/demo2.cpp.o: in function `MiraiCP::Contact::deserializationFromString(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)':
demo2.cpp:(.text+0xbc7e): multiple definition of `MiraiCP::Contact::deserializationFromString(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'; CMakeFiles/MiraiCP.dir/demo.cpp.o:demo.cpp:(.text+0xbc7e): first defined here
/usr/bin/ld: CMakeFiles/MiraiCP.dir/demo2.cpp.o: in function `MiraiCP::Contact::deserializationFromJson(nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> > >)':
demo2.cpp:(.text+0xc230): multiple definition of `MiraiCP::Contact::deserializationFromJson(nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> > >)'; CMakeFiles/MiraiCP.dir/demo.cpp.o:demo.cpp:(.text+0xc230): first defined here
/usr/bin/ld: CMakeFiles/MiraiCP.dir/demo2.cpp.o: in function `MiraiCP::Contact::sendVoice0(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, JNIEnv_*)':
demo2.cpp:(.text+0xc394): multiple definition of `MiraiCP::Contact::sendVoice0(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, JNIEnv_*)'; CMakeFiles/MiraiCP.dir/demo.cpp.o:demo.cpp:(.text+0xc394): first defined here
/usr/bin/ld: CMakeFiles/MiraiCP.dir/demo2.cpp.o: in function `MiraiCP::enrollPlugin0(MiraiCP::CPPPlugin*)':
demo2.cpp:(.text+0xc831): multiple definition of `MiraiCP::enrollPlugin0(MiraiCP::CPPPlugin*)'; CMakeFiles/MiraiCP.dir/demo.cpp.o:demo.cpp:(.text+0xc831): first defined here
/usr/bin/ld: CMakeFiles/MiraiCP.dir/demo2.cpp.o: in function `MiraiCP::PluginConfig::serialize[abi:cxx11]()':
demo2.cpp:(.text+0xc84a): multiple definition of `MiraiCP::PluginConfig::serialize[abi:cxx11]()'; CMakeFiles/MiraiCP.dir/demo.cpp.o:demo.cpp:(.text+0xc84a): first defined here
/usr/bin/ld: CMakeFiles/MiraiCP.dir/demo2.cpp.o: in function `Verify(JNIEnv_*, _jobject*)':
demo2.cpp:(.text+0xcae7): multiple definition of `Verify(JNIEnv_*, _jobject*)'; CMakeFiles/MiraiCP.dir/demo.cpp.o:demo.cpp:(.text+0xcae7): first defined here
/usr/bin/ld: CMakeFiles/MiraiCP.dir/demo2.cpp.o: in function `PluginDisable(JNIEnv_*, _jobject*)':
demo2.cpp:(.text+0xd208): multiple definition of `PluginDisable(JNIEnv_*, _jobject*)'; CMakeFiles/MiraiCP.dir/demo.cpp.o:demo.cpp:(.text+0xd208): first defined here
/usr/bin/ld: CMakeFiles/MiraiCP.dir/demo2.cpp.o: in function `returnNull()':
demo2.cpp:(.text+0xd25b): multiple definition of `returnNull()'; CMakeFiles/MiraiCP.dir/demo.cpp.o:demo.cpp:(.text+0xd25b): first defined here
/usr/bin/ld: CMakeFiles/MiraiCP.dir/demo2.cpp.o: in function `Event(JNIEnv_*, _jobject*, _jstring*)':
demo2.cpp:(.text+0xd381): multiple definition of `Event(JNIEnv_*, _jobject*, _jstring*)'; CMakeFiles/MiraiCP.dir/demo.cpp.o:demo.cpp:(.text+0xd381): first defined here
/usr/bin/ld: CMakeFiles/MiraiCP.dir/demo2.cpp.o: in function `JNI_OnLoad':
demo2.cpp:(.text+0xfc9d): multiple definition of `JNI_OnLoad'; CMakeFiles/MiraiCP.dir/demo.cpp.o:demo.cpp:(.text+0xfc9d): first defined here
collect2: error: ld returned 1 exit status
make[2]: *** [CMakeFiles/MiraiCP.dir/build.make:113: libMiraiCP.so] Error 1
make[1]: *** [CMakeFiles/Makefile2:100: CMakeFiles/MiraiCP.dir/all] Error 2
make: *** [Makefile:91: all] Error 2

本地运行环境
ArchLinux, g++ (GCC) 11.1.0, cmake version 3.21.3, GNU Make 4.3
版本:

名字 出现的版本
miraiCP_CPP.zip v2.8.0-M1
@Antares0982 Antares0982 added the t: question 类型:问题 label Oct 21, 2021
@Nambers
Copy link
Owner

Nambers commented Oct 21, 2021

其实是有#ifdef包裹的
https://github.com/Nambers/MiraiCP/blob/v2.8.0-M1/cpp/include/miraiCP.hpp#L22
我下午试一下多文件一起编译

@Antares0982
Copy link
Collaborator Author

Antares0982 commented Oct 21, 2021

其实是有#ifdef包裹的 https://github.com/Nambers/MiraiCP/blob/v2.8.0-M1/cpp/include/miraiCP.hpp#L22 我下午试一下多文件一起编译

你说的和我想说的不是一个意思,多文件编译时是每个文件分开单独编译再链接的,所以每个文件都会包含miraiCP.hpp里的定义,再链接时会出错。我的意思是提供一个宏#ifndef XXX包裹所有定义,这样用户在多文件时可以在除了main以外的文件通过定义#define XXX来防止重复定义

@Nambers
Copy link
Owner

Nambers commented Oct 21, 2021

明白了 我下午找找有没有更直接的解决方法,就不用用户手动控制的

@Antares0982
Copy link
Collaborator Author

有劳了!很期待miraiCP的发展:)

顺便问一下,解析Forwarded Message的支持大概要到什么时候呢?

@Nambers
Copy link
Owner

Nambers commented Oct 21, 2021

最近有时间就做,你可以看另外一个issue看后续XD

@Nambers Nambers added t: bug 类型:bug p: high 优先级:高 and removed t: question 类型:问题 labels Oct 21, 2021
@Nambers
Copy link
Owner

Nambers commented Oct 21, 2021

看起来分离出个cpp是个不错的选择
接下来大概就分出个cpp, 然后有时间的话做个cmake_module

@Antares0982
Copy link
Collaborator Author

辛苦了!

我也想参与贡献miraiCP,虽然比较菜就是了……可以加你QQ一起讨论吗?

@Nambers
Copy link
Owner

Nambers commented Oct 21, 2021

辛苦了!

我也想参与贡献miraiCP,虽然比较菜就是了……可以加你QQ一起讨论吗?

可以啊没什么问题hhh
我也是慢慢写上来的,看v0.1代码菜的很 XD

@Nambers Nambers reopened this Oct 21, 2021
Nambers added a commit that referenced this issue Oct 21, 2021
@Nambers
Copy link
Owner

Nambers commented Oct 21, 2021

分实现到cpp了,应该没什么问题了
用这个看看 https://github.com/Nambers/MiraiCP/tree/devRelease/%2396

@Antares0982
Copy link
Collaborator Author

分实现到cpp了,应该没什么问题了 用这个看看 https://github.com/Nambers/MiraiCP/tree/devRelease/%2396

辛苦了,我这编译也通过了

@Nambers
Copy link
Owner

Nambers commented Oct 23, 2021

下个版本使用这套方案

@Nambers Nambers closed this as completed Oct 23, 2021
Nambers added a commit that referenced this issue Oct 25, 2021
Nambers added a commit that referenced this issue Oct 25, 2021
Nambers added a commit that referenced this issue Oct 25, 2021


Former-commit-id: bce6e62fa922069bd6ce09960345504ec21e1716
Nambers added a commit that referenced this issue Oct 25, 2021
#96


Former-commit-id: 352e8059ab25181fb718d7074149bdfadcb1a17e
Nambers added a commit that referenced this issue Oct 25, 2021


Former-commit-id: 4fc7128398d70beaedd5ae24d39151c21da7e4d2 [formerly bce6e62fa922069bd6ce09960345504ec21e1716]
Former-commit-id: 04830d1
Nambers added a commit that referenced this issue Oct 25, 2021
#96


Former-commit-id: 018697cb8251b229a38a57dc75d27f771e748140 [formerly 352e8059ab25181fb718d7074149bdfadcb1a17e]
Former-commit-id: 388d1d8
Nambers added a commit that referenced this issue Oct 25, 2021


Former-commit-id: fa2e43e2fb43acb0bd1f6fdb6b8be259cffc6ec8 [formerly 6cfa171d87297997bca76646dd8ea67aa75cead6]
Former-commit-id: 9ed18dea88ca25403b9c51795d9468ee0bac4b97
Nambers added a commit that referenced this issue Oct 25, 2021
#96


Former-commit-id: a5559c31af122b3acce0aa91db2d3880ea8094fd [formerly 85d05554ea10dc877eadd6e7e4fb0004d532a3a3]
Former-commit-id: ecb1c4b16662442a263105590df21adf0352cfa7
Nambers added a commit that referenced this issue Oct 25, 2021


Former-commit-id: 43abeec8921d3fbcccac9bbe278b87af7534a03c [formerly 16bd1bcc33b4a44dc5fe659cb7d9a863e93e6672]
Former-commit-id: 894083ae3503cc6e5cba9ea473562cce62176f00
Nambers added a commit that referenced this issue Oct 25, 2021
#96


Former-commit-id: 67ab6216f21b6936999cfb74f83ddcade94bd68b [formerly d097136a2364e9da2e7fa59e9dcf02d399cac86f]
Former-commit-id: 532de938b7af007590aadded404b22c98bd802bd
Nambers added a commit that referenced this issue Oct 26, 2021


Former-commit-id: 43abeec8921d3fbcccac9bbe278b87af7534a03c [formerly 16bd1bcc33b4a44dc5fe659cb7d9a863e93e6672]
Former-commit-id: 894083ae3503cc6e5cba9ea473562cce62176f00
Nambers added a commit that referenced this issue Oct 26, 2021
#96


Former-commit-id: 67ab6216f21b6936999cfb74f83ddcade94bd68b [formerly d097136a2364e9da2e7fa59e9dcf02d399cac86f]
Former-commit-id: 532de938b7af007590aadded404b22c98bd802bd
Nambers added a commit that referenced this issue Oct 26, 2021


Former-commit-id: 43abeec8921d3fbcccac9bbe278b87af7534a03c [formerly 16bd1bcc33b4a44dc5fe659cb7d9a863e93e6672]
Former-commit-id: 894083ae3503cc6e5cba9ea473562cce62176f00
Nambers added a commit that referenced this issue Oct 26, 2021
#96


Former-commit-id: 67ab6216f21b6936999cfb74f83ddcade94bd68b [formerly d097136a2364e9da2e7fa59e9dcf02d399cac86f]
Former-commit-id: 532de938b7af007590aadded404b22c98bd802bd
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
p: high 优先级:高 t: bug 类型:bug
Projects
None yet
Development

No branches or pull requests

2 participants