qt -lnk2019当在类的成员函数中使用名称空间的函数时

  • 本文关键字:函数 空间 -lnk2019 成员 qt c++ qt
  • 更新时间 :
  • 英文 :


我有一个名称空间,其中 Projecttestcompare_structs.h中的功能声明:

#ifndef COMPARE_STRUCTS_H
#define COMPARE_STRUCTS_H
#include <QtTest/QtTest>
#include "include/Utils/containers.h"
namespace compare_structs {
    void compareRawData(RAW_DATA actual, RAW_DATA expected);
    ...
}
#endif // COMPARE_STRUCTS_H

我定义了Projecttestcompare_structs.cpp中的功能:

#include "compare_structs.h"
void compare_structs::compareRawData(RAW_DATA actual, RAW_DATA expected)
{
    ...
}

我还将.h.cpp文件添加到QTS .pro文件:

test {
HEADERS +=  ...
            test/sql_db_test.h 
            test/compare_structs.h 
SOURCES +=  ...
            test/sql_db_test.cpp 
            test/compare_structs.cpp 
}

现在我 #include compare_structs.h到类.h,然后在.cpp文件中调用它:

Projecttestsql_db_test.h

#ifndef SQL_DB_TEST_H
#define SQL_DB_TEST_H
...
#include "test/compare_structs.h"
class Sql_DB_Test : public QObject
{
    ...
private slots:
    ...
    void add_get_raw_data_test();
    ...
};
#endif // SQL_DB_TEST_H

Projectmaintestsql_db_test.cpp

#include "sql_db_test.h"
void Sql_DB_Test::add_get_raw_data_test()
{
    ...
    compare_structs::compareRawData(rawBack, raw); //LNK2019
}

错误消息:

sql_db_test.obj:-1: Fehler: LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""void __cdecl compare_structs::compareRawData(struct RAW_DATA,struct RAW_DATA)" (?compareRawData@compare_structs@@YAXURAW_DATA@@0@Z)" in Funktion ""private: void __thiscall Sql_DB_Test::add_get_raw_data_test(void)" (?add_get_raw_data_test@Sql_DB_Test@@AAEXXZ)".

免费翻译: unresolved externel symbol ""void __cdecl compare_structs::compareRawData(struct RAW_DATA,struct RAW_DATA)" (?compareRawData@compare_structs@@YAXURAW_DATA@@0@Z)" in function ""private: void __thiscall Sql_DB_Test::add_get_raw_data_test(void)" (?add_get_raw_data_test@Sql_DB_Test@@AAEXXZ)".

是什么导致链接器错误?

这听起来就像每次我在QT项目中添加新文件时都会发生什么。QT创建者对重建自己的makefile的需要感到困惑。

如果完整的"清洁",然后是QT Creator菜单中的"重建所有",则只需转到项目所在的Parent文件夹,然后删除与您的项目相对应的build-...文件夹。

然后再次"清洁全部"one_answers"重建"。

最新更新