首先介绍下一个我经历过的一个大坑,工作第一年在csdn提问时被告知,如果你有两个以上的项目要共享一个类,那么就把这些类的cpp文件加入每个项目编译就行了。
如果一个解决方案下有两个项目PA,PB,这两个项目都要用到同一个类CC。从之前的文章知道数据类型没问题,但是一旦涉及函数和静态变量,那么就要考虑导出的问题,否则会出现链接错误的提示。刚毕业时这些完全不懂,出现了链接错误的问题。于是我去csdn上提问,回答就是每个项目都加入该类CC的cpp文件。而且那时候公司的项目也是这么做的。
后来,我意识到这样做有两个问题:1.内存问题;2.静态变量的问题;
其中第一个问题尤其严重,特别是两个项目使用不同的系统库的情况下,比如我们公司是VS2010和VS2013混合使用,这样会导致内存崩溃问题。下面通过代码介绍下这种用法的错误之处。
先看一下我写的代码结构:
如上图所示,我创建Algorithm为其他项目提供算法接口,其中有一个类为CTest,我先用分别编译的方法,在两个项目下都加入CTest.cpp。这样我们两个项目都可以使用这个CTest类。
下面是各个cpp和h文件代码:
测试类文件
// CTest.h
#pragma once
class CTest
{
public:
CTest(int* _buf,int _size);
~CTest();
int* Reverse();
s