我有一个项目,我必须将其从分离 .cpp/header 文件更改为将定义加入头文件中。我最初尝试将cpp文件的内容复制到头文件中,但我的ide - VS2012 express - 让我进入一个循环,它说头文件包含自身,所以当我删除包含“class.h”时它抱怨说在 Class::functionname 的情况下,无法识别 Class。最终我决定在标题本身中定义定义,例如
class Thing {
public:
void func { code; }
}
这解决了我在项目上的编译问题。问题是我有一个测试项目 - WinUnit - 我无法再访问这些功能。该项目曾经是一个静态库并进行了相应的链接,但由于没有 .cpp 文件,该项目没有生成 .lib。尝试更改为动态链接库,同样的问题 - 没有产生 dll。所以我添加了一个项目引用,当我输入#include“Class.h”时,它似乎可以识别我的类文件。
我的问题是它仍然没有编译类。它根本无法识别测试项目的 .cpp 文件中的类名。我什至尝试将头文件添加到测试项目中,但仍然没有乐趣。我尝试将附加包含目录设置为指向标题所在的位置 - 不好。
我怎样才能做到这一点?
编辑:仍然卡住了,所以我创建了一个 SSCCE,它运行良好,将测试项目指向附加包含目录中的头文件目录并且它运行正常。虽然主项目编译得很好,但我注意到它有一个智能感知错误 - 标识符“ClassName”未定义。所有其他类都识别其他类。#include "className" 存在。当我构建测试项目时,第一个错误与智能感知错误有关:错误1错误C2143:语法错误:缺少';' 前 '*'
实际的行是:ClassName * obj; - 这是一个私有变量。
测试项目有629个错误——其他一些代码:c4430、c2061。我想这些只是与未识别的类相关的初始问题的副作用......我迷路了,可以退出并重新考虑失败......
编辑:修复了智能感知错误,因此所有错误现在都在 Testproject 中 - 最多出现 826 个错误。包含头文件时看到头文件,但不识别任何类名。错误代码:c2061、c2065、c2923 等