这里是一个简单的CMake项目:
cmake_minimum_required(VERSION 3.0)
project(Test)
add_library(Test STATIC test1.cpp test2.cpp)
与
test1
如下:
// test1.h
#pragma once
void test();
// test1.cpp
#include "test1.h"
void test()
{
}
和
test2
:
// test2.h
#pragma once
void test();
// test2.cpp
#include "test2.h"
void test()
{
}
这个项目编译得很好。但是,如果我将库更改为动态的:
add_library(Test SHARED test1.cpp test2.cpp)
项目编译失败并显示链接错误 (MSVC 17.5.1):
致命错误 LNK1169:找到一个或多个多重定义的符号
什么原因导致静态库编译通过,共享库编译失败?我希望静态库也会失败,但这并没有发生。