• 526阅读
  • 3回复

[提问]无法解析的外部符号   MFC工程(没地方问) [复制链接]

上一主题 下一主题
离线介农酥
 

只看楼主 倒序阅读 楼主  发表于: 2023-07-25
回复本帖可获得30RMB金钱奖励!
每人最多可获奖1次,奖池剩余90RMB金钱 (中奖几率10%)
1>MES.obj : error LNK2019: 无法解析的外部符号 "public: class ATL::CStringT<wchar_t,class ATL::StrTraitATL<wchar_t,class ATL::ChTraitsCRT<wchar_t> > > __cdecl _Http::PostData(struct _RequestParam)" (?PostData@_Http@@QEAA?AV?$CStringT@_WV?$StrTraitATL@_WV?$ChTraitsCRT@_W@ATL@@@ATL@@@ATL@@U_RequestParam@@@Z),函数 "public: struct _MES_Data __cdecl MES::GetData(struct _RequestParam)" (?GetData@MES@@QEAA?AU_MES_Data@@U_RequestParam@@@Z) 中引用了该符号

意思是MES::GetData()函数中不能找到函数_Http::PostData()。

C++里面语法我还是不太熟悉,还有一个Qt工程,我想把两个程序合并到一起,因为很多类是同名的,我本来是想用命名空间将另一个程序包起来,这样就不会同名了,但还报是同名,哎,其实很不理解。

大概的工程(visual studio 2022 纯MFC工程):
MES.h 包含了_http.h文件,但是MES.h文件在文件夹Modules,_http.h在文件夹common里,我在想是不是不同的文件夹导致找不到_http.cpp。


#pragma once
#include "../common/_Http.h"

class MES
{
public:
    MES();
    MES_Data GetData(RequestParam rp);

private:
    _Http* http;

};


#include "MES.h"

MES::MES()
{
    http = new _Http();
}

MES_Data MES::GetData(RequestParam rp)
{
    MES_Data md;
    CString str = http->PostData(rp);
    return md;
}



离线uidab

只看该作者 1楼 发表于: 2023-07-26
错误有很多可能,baidu一下
有时候为了工作直接获得答案,而我却失去了思考的乐趣!


飘啊飘,何时能安居!
离线spygg

只看该作者 2楼 发表于: 2023-07-27
明显的是有函数声明,但是编译器找不到函数实现,所以不是头文件的问题
可以把实现改类的.cpp文件添加到工程中应该可以解决
签名就是这么浪
离线loogoo

只看该作者 3楼 发表于: 2023-08-11
http cpp文件应该没有编译,所以链接的时候找不到。
快速回复
限100 字节
 
上一个 下一个