c++求指教,我就把原来头文件和源文件和在一起了,然后就出来说无法解析的问题了。原来是没有任何问题的

obj是定义的类函数,也许是作用域的问题,但是我也不太清楚,求指教~
1>Main.obj : error LNK2019: 无法解析的外部符号 "public: __thiscall Huffman::~Huffman(void)" (??1Huffman@@QAE@XZ),该符号在函数 _main 中被引用
1>Main.obj : error LNK2019: 无法解析的外部符号 "public: int __thiscall Huffman::Analyse(void)" (?Analyse@Huffman@@QAEHXZ),该符号在函数 _main 中被引用
1>Main.obj : error LNK2019: 无法解析的外部符号 "public: int __thiscall Huffman::Decoding(void)" (?Decoding@Huffman@@QAEHXZ),该符号在函数 _main 中被引用
1>Main.obj : error LNK2019: 无法解析的外部符号 "public: int __thiscall Huffman::Encoding(void)" (?Encoding@Huffman@@QAEHXZ),该符号在函数 _main 中被引用
1>Main.obj : error LNK2019: 无法解析的外部符号 "public: int __thiscall Huffman::CreateTable(void)" (?CreateTable@Huffman@@QAEHXZ),该符号在函数 _main 中被引用
1>Main.obj : error LNK2019: 无法解析的外部符号 "public: int __thiscall Huffman::CreateTree(void)" (?CreateTree@Huffman@@QAEHXZ),该符号在函数 _main 中被引用
1>Main.obj : error LNK2019: 无法解析的外部符号 "public: int __thiscall Huffman::Init(void)" (?Init@Huffman@@QAEHXZ),该符号在函数 _main 中被引用
1>C:\Users\lenovo\Desktop\Huffman\Debug\Huffman.exe : fatal error LNK1120: 7 个无法解析的外部命令

联想电脑,程序写在桌面,典型的初学者,呵呵,逗趣一下而已

这种问题的出现一般是由于找不到CPP或者lib文件造成的,就是说,编译器找到了h,在里面发现了函数声明,但是找不到对应的cpp或者lib文件
这时候他就很迷茫了,不知道这个链接应该连到哪个obj

我没看到你的代码,不过你既然说源文件和头文件合在一起了,那就表示函数还是存在的,只是编译器找不到接口了

你可以尝试把文件名改为.hpp,然后在工程里把原来的h删掉(因为外部改了名字,这个时候其实编译器是找不到文件的,你双击那个h会提示你源文件缺失),再把这个新改名的文件加入工程,编译一下试试~
如果还是不行,可能是你合的格式有问题,我不知道你为什么要把两个文件合在一起,标准的不应该这么写,建议还是重新分开追问

因为是想用别人的程序交作业~~~~(>_<)~~~~ 。。。代码太多了所以粘不上来,而且文库也发布出来,要是您有时间的话我能给您发邮箱吗?刚才我重写了一遍,刚才那个问题没有了,又出来新问题了 error C2039: “CreateTreeTable”: 不是“Huffman”的成员,我的程序里面CreateTreeTable明明是Huffman的成员函数呢

追答

你这样没用的,如果真是查作业,一般看看命名就知道了,你合或者不合意义不大
你看一看函数的入参和返回值是不是相同的,如果入参不同或者返回值不同,编译器就会认为不是同一个函数,尽管名字完全相同

PS:也仔细检查下函数名,错一个字母或者大小写都不是同一个函数

温馨提示:内容为网友见解,仅供参考
无其他回答

c++求指教,我就把原来头文件和源文件和在一起了,然后就出来说无法解析的...
我没看到你的代码,不过你既然说源文件和头文件合在一起了,那就表示函数还是存在的,只是编译器找不到接口了 你可以尝试把文件名改为.hpp,然后在工程里把原来的h删掉(因为外部改了名字,这个时候其实编译器是找不到文件的,你双击那个h会提示你源文件缺失),再把这个新改名的文件加入工程,编译一...

无法打开源文件??一招教你解决所有问题!
首先,你可以尝试在本地搜索头文件。打开VS项目属性,进入VC++目录,点击编辑,添加包含头文件的文件路径,操作完成后,红色波浪线就会消失。这种方法适用于头文件已经存在于电脑上的情况。如果本地找不到,那就需要借助网络资源。以一个图形库头文件为例,你可以找到相关的下载链接,比如easyx.cn\/download...

无法解析的外部符号 C++
没看到你的h文件,所以无法分析这段代码是否有问题 但是看错误类型,倒像是多定义了main函数 检查一下是否是多编译了文件,或者main函数放在h文件里面了,然后被多个文件引用

记一次 C++20 包含 thread 头文件编译报错问题排查
省略了之前的错误内容,错误信息显示是包含头文件后导致的。问题排查:首先,我尝试了无脑但实用的排除法,将问题源文件的代码反复删减,例如删除其他头文件,最终发现,仅剩一行 #include 代码时仍然报错。为了验证是否为 GCC 的 bug,我手动创建了一个文件,仅包含一行代码,然后使用 g++ -std=c++20 -...

为什么c++无法解析外部的符号?
C语言中外部符号的声明 外部符号的声明:这里的外部符号是在不同源文件下定义符号的区分源文件一假设是有外部符号的,int g_val=10;这里只有g_val的值的显示源文件二就是主要的源文件,是执行文件,这里可以不定义g_val,可以用extern来引用源文件一里的g_val的值。

visual c++6.0打开源文件时说已停止工作,如何解决
解决方法 步骤一:右击左面图标,点击属性。步骤二:点击左上角的快捷方式,然后点击“打开文件夹位置”。步骤三:在打开的文件夹中找到下图文件,后缀为“应用程序”。步骤四:右击“MSDEV”,选择重命名,修改为“MSDEV3”效果如下图。步骤五:右击“MSDEV3”、“发送到”、“桌面快捷方式”步骤六:...

c++源文件无法运行的原因是无法打开源文件?
文件并没有拷贝到工程的本地目录下,这个文件可能只C++——用VS编写第一个C++程序 今天开始学习用VS编写C++程序 1.打开VS2012,选择新建——项目: 2.新建项目时选择Visual C++空项目,并命名为“Project0”. 3.接下来就是往项目里面添加源文件了。在项目资源管理器里选中源文件,添加新建 ...

C\/C++中头文件和源文件的区别是什么?
头文件和源文件在本质上没有任何区别。 只不过一般:后缀为 .h 的文件是头文件,内含函数声明、宏定义、结构体定义等内容。后缀为 .c 的文件是源文件,内含函数实现,变量定义等内容。而且是什么后缀也没有关系,只不过编译器会默认对某些后缀的文件采取某些动作。这样分开写成两个文件是一个良好...

在C\/C++中自己建立的头文件和主源文件要放在一个文件夹里吗?
你的第一个问题:肯定要cpp文件啊(代码实现部分最主要的部分)。原则上头文件和源文件应该在都一个目录(工程目录)中所以你的第二个问题应该放在同一个文件夹下。编译一个源文件 C++编译系统首先在工程目录中查找相关文件,然后是C++系统目录(安C++得目录)系统的头文件一般不加.h比如#include "...

c++中如何添加头文件,请多多指教,
把自己定义的头文件放在与源文件一样的目录下面就可以了,比如说你写一个头文件myfile.h,主函数为main.cpp,你可以把main.cpp与myfile.h同时放在D:\\code\\文件夹下面,然后在main.cpp的文件开始位置加一句#include"myfile.h"就可以了,如果myfile.h放在别的文件夹下面,比如E:\\aaa\\,可以在main.cpp...

相似回答