c++ - LNK2019 未解析符号

标签 c++

我正在努力

main.obj:-1: error: LNK2019: unresolved external symbol "public: __cdecl Book::Book(void)" (??0Book@@QEAA@XZ) referenced in function main

main.obj:-1: error: LNK2019: unresolved external symbol "public: void __cdecl Book::update(class Order)" (?update@Book@@QEAAXVOrder@@@Z) referenced in function main

据我所知,这通常是因为缺少选择器,但我看不出自己遗漏了什么。此外,没有静态变量,参数似乎是正确的,...浏览下面的问题列表无助于找出问题。

https://msdn.microsoft.com/en-us/library/799kze2z.aspx

#include <QCoreApplication>
#include <order.h>
#include <book.h>
#include <iostream>
#include <vector>

std::vector<Order> md_orders;


int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    Order order;
    order.setIsBid( true );
    order.setSize( 500 );
    order.setPrice( 10.00 );

    double price = order.getPrice();

    Book book;
    book.update( order );

    std::cout << price;


    return a.exec();
}

书.h

#ifndef BOOK_H
#define BOOK_H
//#include <order.h>
#include <vector>

class Book
{
public:
    Book();
    Order getBest( double, bool );
    void update( Order );
    double getBestPrice( bool );
private:
    std::vector<Order> _orders;
};

#endif // BOOK_H

书.cpp

#include "book.h"
#include <limits>
//#include <order.h>

#include <iostream>

int imax = std::numeric_limits<int>::max();

Book::Book()
{

}



void Book::update( Order order ) {

    std::cout << order.getSize();

}

我是 cpp 的新手。我似乎对书籍类和订单类做同样的事情,它工作正常。这非常令人困惑。有什么指点吗?

因此,出于好奇,我创建了一个新项目并添加了一个类 TestA 并运行它,一切顺利。然后我以完全相同的方式创建了类 TestB,它因 TestB 的相同错误而中断,但 TestA 没有

#include <QCoreApplication>
#include "testa.h"
#include "testb.h"

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);


    TestA A;
    TestB B;

    return a.exec();
}

测试.h

#ifndef TESTA_H
#define TESTA_H


class TestA
{
public:
    TestA();
};

#endif // TESTA_H

测试b.h

#ifndef TESTB_H
#define TESTB_H


class TestB
{
public:
    TestB();
};

#endif // TESTB_H

抛出这个

main.obj:-1: error: LNK2019: unresolved external symbol "public: __cdecl TestB::TestB(void)" (??0TestB@@QEAA@XZ) referenced in function main

这就是 qt creator 的全部内容。这看起来很奇怪

最佳答案

在你的 main.cpp 中,

注意你是如何包含 book.h 的 编译器不会在本地目录中查找 book.h,也无法在标准库位置找到 book 的定义。

代替 #include <book.h>使用 #include"book.h"

进一步添加。

您尚未在 book.cpp 中定义以下方法,并且您正试图从 main 函数中访问它们。你所有痛苦的原因。

Order getBest( double, bool );
double getBestPrice( bool );

关于c++ - LNK2019 未解析符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39630754/

相关文章:

c++ - 如何在 C++ 中使用 Raspberry pi 3 与 sim800c 通信

c++ - 在 C++ 中使用 vector 设置并集算法

C++ 简单代码。需要找到重复的相邻单词

c++ - 在 O(log m+log n) 时间内搜索二维排序数组中的元素?

C++ 转换为货币值

c++ - "error C2248: ' CObject::CObject ' : cannot access private member declared in class ' CObject'

c++ - Android Studio 因大型 C++ 头文件而崩溃

C++ "expected a declaration"

c++ - 如何在 Qt 中序列化为 JSON

c++ - 使用四元数进行切线空间法线映射 - 我遇到的问题