【发布时间】:2014-10-16 05:10:44
【问题描述】:
我有项目A,其中包含具有类定义和实现MyClass.h 和MyClass.cpp 的源文件。 MyClass 正在使用CString。
现在我决定创建一个新项目B,这是一个简单的控制台应用程序,用于测试MyClass 的目的。在解决方案资源管理器中,我从A 项目位置将MyClass 标头和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 并在项目 B 中创建简单的 MyCLass2,该项目也使用 CString。在构建 B 之后,我遇到了类似
Error 22 error C2061: syntax error : identifier 'CString'
包含在MyClass 和MyClass2 中是相同的。
为什么在 MyClass 案例中我被要求添加 MFC lib?我想在这种情况下编译器知道CString 是什么。它是怎么知道的?
当系统不理解CString 是什么时,我期望得到与使用MyClass2 编译时相同的结果。
【问题讨论】:
-
您可能想要创建一个library,并且您可能想要创建一个共享库。详细信息因操作系统和编译器而异。
-
项目 A 是 MFC windows 应用程序。项目 B 是控制台应用程序。它们都不是共享库。
-
但是你可以制作一个通用源代码库。
-
是的,这可能是解决方案。但是我想使用共享代码样式来防止以后对不同的lib版本产生误解。无论如何,我的问题不是如何解决问题,而是如何理解这种奇怪的 VS 行为。
-
您的两个项目是否在同一个文件夹中?在第一种情况下,可能是 MyClass 的现有目标文件被重用了。
标签: c++ string visual-c++ mfc