为什么我生成的动态库里找不到类或符号。在使用时编译器会报未声明的定义?
因为我们在使用Cmake组织项目文件时,习惯于将特定功能放在不同的目录,在不同的目录生成Cmake的子项目。子项目生成*.a文件,然后再在根项目链接各子项目。这个时候由于静态库的特点就会出一些问题。
我们在根项目源文件里没有使用某个类,而在引用动态库时又用到了这个类,这是就会出现文章开头的问题。由于静态库里的符号是在用到的情况下才会被添加,所以根项目文件里没有用到就不会被添加到动态库,自然动态库也就没有这个类或符号,外部也就找不到。