LNK2019:未解析的外部符号,但我已对函数进行了编码

Posted

技术标签:

【中文标题】LNK2019:未解析的外部符号,但我已对函数进行了编码【英文标题】:LNK2019: unresolved external symbol but I have coded the function 【发布时间】:2012-04-13 18:33:44 【问题描述】:

有人可以帮我解决这个问题吗?我正在使用 Visual Studio 2010 我收到了这条消息,但我不知道如何解决这个问题。

1> 生成代码...

1>dct.obj:错误 LNK2019:未解析的外部符号“公共: __thiscall Amostras::Amostras(class std::basic_string,class std::allocator >)" (??0Amostras@@QAE@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z) 在函数_main中引用

1>C:\Users\redneck\documents\visual studio 2010\Projects\dct\Debug\dct.exe:致命错误 LNK1120:1 未解决 外在

这里是一些 *.cpp 文件:

class Amostras 
public:
    int original[10][257];
    int idct[10][257];
    float dct[10][257];
    int grupos;

Amostras::Amostras(void)
    
    for (int i=0;i<10;i++)
    
        this->original[i][0]=0; 
        this->dct[i][0]=0.0;
        this->idct[i][0]=0;
        
        this->grupos=0;
    

Amostras::Amostras(string arquivo)

    int n_samples=0,linha=0,coluna=0;
    int cont;
..

这里是 *.h

class Amostras 
public:
    int original[10][257];
    int idct[10][257];
    float dct[10][257];
    int grupos;

    Amostras::Amostras();
    Amostras::Amostras(string arquivo);
    void Amostras::mostra(void);
;

主要

int main(void)

    Amostras *amostra = new Amostras("in.txt");
    dct(amostra,0);
    show(amostra,0);
    amostra->mostra();
    return 0;

希望它有帮助,我这里的选项用完了:(


解决方案:

所以我所做的只是将类放在 *.h 中,然后将 *.h 包含在仅具有该类的方法和功能的类 *.cpp 中。成功了!

【问题讨论】:

查看 templatetypedef 的答案,但如果您想要更具体的答案,请发布您的代码。同时,您可以阅读本文以获取有关 LNK2019 的更多信息:msdn.microsoft.com/en-us/library/799kze2z(v=vs.80).aspx 【参考方案1】:

此链接器错误通常意味着您已经制作了函数原型但忘记定义它。确保你已经实现了该功能

Amostras::Amostras(string arg);

某处,当您链接包含该实现的目标文件的代码时。

希望这会有所帮助!

【讨论】:

它是 Amostras 类的构造函数。它没有帮助。【参考方案2】:

你忘了定义Amostras::Amostras(string arg); 虽然在你的 *.h 文件中声明了

Amostras::Amostras(string arg)


将上述代码复制到您的 *.cpp 文件中

您也可以通过注释 *.h 文件中的行来做到这一点。

//Amostras::Amostras(string arg);

哇!你有 *.h 文件吗?如果你只在 *.cpp 中工作,那么请让我知道。

【讨论】:

我有一个 *.h 文件,其中包含我的 *.cpp 文件中的所有原型。 好的,它有效吗?如果您不使用它,请尝试创建一个内联构造函数。 它没有用,我在 *.cpp 中定义了我的所有类,所有构造函数 (2)、变量和一个函数。在我的 *.h 中,我还有构造函数、变量和函数的原型。我在我的另一个文件中包含 *.h。

以上是关于LNK2019:未解析的外部符号,但我已对函数进行了编码的主要内容,如果未能解决你的问题,请参考以下文章

链接 OpenCV 失败,LNK 2019 未解析的外部符号

LNK2019:未解析的外部符号 _main 在函数 ___tmainCRTStartup 中引用

LNK2019:未解析的外部符号——隐式 DLL [重复]

C++:错误 LNK2019:函数 _main 中引用的未解析的外部符号

vc ++ MFC应用程序,错误LNK2019:未解析的外部符号

错误 LNK2019:Visual Studio 中未解析的外部符号 [重复]