我有一个包含函数声明的命名空间Project\test\compare_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
我在里面定义了函数Project\test\compare_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
文件:
Project\test\sql_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
Project\main\test\sql_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 Creator 对重建自己的 makefile 的需要感到困惑。
如果 Qt Creator 菜单中完整的“全部清除”后跟“全部重建”不起作用,则只需转到项目所在的父文件夹并删除与build-...
项目对应的文件夹。
然后再次“全部清除”和“全部重建”。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句