LNK2019未解析符号
LNK2019 uresolved symbol
我很纠结
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();
}
book.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
book.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();
}
我是新来的。我似乎对书本类和订单类做了同样的事情,它工作得很好。这很令人困惑。指针吗?
所以,出于好奇,我创建了一个新的项目,并添加了一个类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();
}
testa.h
#ifndef TESTA_H
#define TESTA_H
class TestA
{
public:
TestA();
};
#endif // TESTA_H
testb.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中定义下面的方法,并且您正在尝试从主函数访问它们。你所有痛苦的原因。
Order getBest( double, bool );
double getBestPrice( bool );
您应该执行以下操作(如果您手动运行编译器和链接器):
- 编译
- 链接两个文件为一个可执行文件
main.cpp
编译book.cpp
如果编译器允许,上述所有操作都可以在一个命令中完成。
由于我不熟悉MSVC编译器,我将展示如何使用gcc完成此操作:
gcc -c -o main.o main.cpp # Compiles main.cpp into main.o
gcc -c -o book.o book.cpp # Compiles book.cpp into book.o
gcc -o my_app main.o book.o # Creates the my_app executable from main.o and book.o
或
gcc -o my_app main.cpp book.cpp # Does all of above in one command
相关文章:
- 错误LNK2019未解析的外部符号"public: __thiscall SLinkList<char>::SLinkList<char>(void)"
- Qt C++LNK2019:使用QNetworkAccessManager未解析的外部符号
- LNK2019:C++/CLI 中未解析的外部符号
- 函数 LNK2019 "int __cdecl __scrt_common_main_seh(void)" 中引用的未解析外部符号主错误 (?__scrt_common_main_seh@@YAHXZ
- LNK2019未解析的外部符号"公共:__thiscall
- LNK2019和LNK1120错误,未解析的外部和未解析的符号
- MAPI 链接静态库 (LNK2019: 未解析的外部符号)
- LNK2019未解析的外部符号
- C++编译错误LNK2019:未解决的外部符号错误
- 错误 LNK2019: 未解析的外部符号 Visual Studio 2013 与 openCV
- LNK2019未解析的外部符号_D3DXCreateFontA@48
- nanodbc 错误 LNK2019:未解析的外部符号 - 在基本连接上
- LNK2019:与单位测试中未解决的外部符号
- 编译轨道样品时的C 错误-LNK2019未解决的外部符号
- 未解析的外部符号 (LNK2019)
- TCHAR和程序中未解析的外部符号(LNK2019)错误C++
- C++未解析的外部符号LNK2019和LNK2001
- Qt 未解析的外部符号LNK2019
- 用于基于COM的库的带有WinRT组件的未解析外部符号LNK2019
- 无法解析的外部符号- LNK2019从c++ dll