LNK2019未解析的外部符号" public:__ thishisall

时间:2018-06-04 11:03:17

标签: c++ visual-c++ visual-studio-2015

标题TCP.h

class CTCPcomm {
public:
    CTCPcomm(bool bOverLapped = false, long lTimeOut = 0);
    ~CTCPcomm(void);

TCP.cpp类

CTCPcomm::CTCPcomm ( bool bOverLapped, long lTimeout ) {
.......
}
CTCPcomm::~CTCPcomm ( void ) {
.......
}

这是为plc_test.cpp

调用的
int main(){
CTCPcomm    m_TCPcon(true, lTimeout);
.......
}

这给了我错误,

Severity    Code    Description Project File    Line    Suppression State Error LNK2019 unresolved external symbol "public: __thiscall CTCPcomm::CTCPcomm(bool,long)" (??0CTCPcomm@@QAE@_NJ@Z) referenced in function "void __cdecl `dynamic initializer for 'm_TCPcon''(void)" (?? __Em_TCPcon@@YAXXZ) plc_test
Severity    Code    Description Project File    Line    Suppression State Error LNK2019 unresolved external symbol "public: __thiscall CTCPcomm::~CTCPcomm(void)" (??1CTCPcomm@@QAE@XZ) referenced in function "void __cdecl `dynamic atexit destructor for 'm_TCPcon''(void)" (??__Fm_TCPcon@@YAXXZ) plc_test

我正在使用Visual Studio 2015,并将其编译为.exe文件。 我已阅读了许多帖子,但他们说要将执行类型更改为.lib 但我希望这个项目是一个可执行文件,所以我想坚持使用.exe 如果编译为.lib而不是.exe,为什么编译没有错误? 如果我想将它作为.exe执行而没有错误,该怎么办?

1 个答案:

答案 0 :(得分:0)

我将上面的代码放在Visual Studio 2015项目上,它在x86和x64中都可以正常工作(编译为exe)。

你还在做什么?除了你所展示的,你只需要:  #include "TCPcomm.h" //在#include" stdafx.h"
之后 和
    long lTimeout = 10; //在主