我正在努力
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/