在项目之间共享源文件

时间:2014-08-22 11:00:25

标签: c++ string visual-c++ mfc

我的项目A包含具有类定义和实现MyClass.hMyClass.cpp的源文件。 MyClass正在使用CString

现在我决定创建一个新项目B,它是用于测试MyClass目的的简单控制台应用程序。在解决方案资源管理器中,我从MyClass项目位置向我的项目添加了A标头和cpp文件。直到这一刻我还不知道我必须使用MFC来使用CString。我试图建立项目并得到错误,据我所知,要求使用MFC。

#error :  Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll version. Please #define _AFXDLL or do not use /MD[d]

要了解发生了什么,我决定删除MyClass,并在同样使用MyCLass2的项目B中创建简单的CString。构建B后,我遇到了错误,如

Error   22  error C2061: syntax error : identifier 'CString'    

MyClassMyClass2中的包含相同。

为什么在MyClass案例中我被要求添加MFC lib?我想在这种情况下编译器知道什么是CString。它怎么知道的?

当系统不了解MyClass2时,我希望得到与使用CString进行编译时相同的结果。

2 个答案:

答案 0 :(得分:3)

  

如果在ATL申请中使用:

     

CString,CStringA和CStringW从MFC DLL导出   (MFC90.DLL),绝不是来自用户DLL。这样做是为了防止CStringT   从多重定义。

来源:http://msdn.microsoft.com/en-us/library/5bzxfsea.aspx

如果要在不链接到MFC的情况下使用,则可以使用以下类:CAtlString,CAtlStringA和CAtlStringW。

答案 1 :(得分:1)

MyClassMyClass2都包含stdafx.h,这两个项目不同。 你可以做的是重命名/删除属于项目A的stdafx.h并查看编译错误的位置。