VS2017的C++开发心得(十四)导出类与API开发(上)

本文分享了在VS2017中进行C++开发时遇到的关于类导出和API开发的问题。作者通过实际案例指出,当多个项目共享同一类的cpp文件时,可能导致内存安全问题和静态变量不一致。错误的做法是在每个项目中都包含类的cpp文件,这可能导致不同系统库之间的内存冲突和静态变量的混乱。作者强调了内存管理的原则和静态变量的统一性,并预告下篇文章将介绍正确的类导出和API开发方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先介绍下一个我经历过的一个大坑,工作第一年在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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值