LNK2019 неразрешенный внешний символ "public: __thiscall - PullRequest
0 голосов
/ 04 июня 2018

Заголовок 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 голосов
/ 04 июня 2018

Я поместил приведенный выше код в проект Visual Studio 2015, и он отлично работает (компилируется как exe) как в x86, так и в x64.

Что еще вы делаете?Кроме того, что вы показали, вам нужно только:
#include "TCPcomm.h" // после #include "stdafx.h"
и
long lTimeout = 10; // в основном

...