C++的error LNK2019: 无法解析的外部符号编译错误
最后更新于:2022-04-01 20:13:25
~~~
1>Proxy.obj : error LNK2019: 无法解析的外部符号 __imp__connect@12,该符号在函数 "public: enum ProxyStatus __thiscall CProxy::ConnectProxyServer(unsigned int)" (?ConnectProxyServer@CProxy@@QAE?AW4ProxyStatus@@I@Z) 中被引用
1>Proxy.obj : error LNK2019: 无法解析的外部符号 __imp__ioctlsocket@12,该符号在函数 "public: enum ProxyStatus __thiscall CProxy::ConnectProxyServer(unsigned int)" (?ConnectProxyServer@CProxy@@QAE?AW4ProxyStatus@@I@Z) 中被引用
1>Proxy.obj : error LNK2019: 无法解析的外部符号 __imp__htons@4,该符号在函数 "public: enum ProxyStatus __thiscall CProxy::ConnectProxyServer(unsigned int)" (?ConnectProxyServer@CProxy@@QAE?AW4ProxyStatus@@I@Z) 中被引用
1>Proxy.obj : error LNK2019: 无法解析的外部符号 __imp__inet_addr@4,该符号在函数 "private: enum ProxyStatus __thiscall CProxy::ConnectBySock4(unsigned int,class std::basic_string,class std::allocator >,unsigned short)" (?ConnectBySock4@CProxy@@AAE?AW4ProxyStatus@@IV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@G@Z) 中被引用
1>Proxy.obj : error LNK2019: 无法解析的外部符号 __imp__ntohs@4,该符号在函数 "private: enum ProxyStatus __thiscall CProxy::ConnectBySock4(unsigned int,class std::basic_string,class std::allocator >,unsigned short)" (?ConnectBySock4@CProxy@@AAE?AW4ProxyStatus@@IV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@G@Z) 中被引用
1>Proxy.obj : error LNK2019: 无法解析的外部符号 __imp__recv@16,该符号在函数 "private: int __thiscall CProxy::Receive(unsigned int,char *,int)" (?Receive@CProxy@@AAEHIPADH@Z) 中被引用
1>Proxy.obj : error LNK2019: 无法解析的外部符号 __imp__select@20,该符号在函数 "public: enum ProxyStatus __thiscall CProxy::ConnectProxyServer(unsigned int)" (?ConnectProxyServer@CProxy@@QAE?AW4ProxyStatus@@I@Z) 中被引用
1>Proxy.obj : error LNK2019: 无法解析的外部符号 __imp__send@16,该符号在函数 "private: bool __thiscall CProxy::Send(unsigned int,char const *,int)" (?Send@CProxy@@AAE_NIPBDH@Z) 中被引用
1>Proxy.obj : error LNK2019: 无法解析的外部符号 __imp__setsockopt@20,该符号在函数 "public: enum ProxyStatus __thiscall CProxy::ConnectServer(unsigned int,class std::basic_string,class std::allocator >,unsigned short)" (?ConnectServer@CProxy@@QAE?AW4ProxyStatus@@IV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@G@Z) 中被引用
1>E:\WorkVS2012\SocketProxy\Debug\SocketProxy.exe : fatal error LNK1120: 9 个无法解析的外部命令
1>
1>生成失败。
~~~
error LNK2019: 无法解析的外部符号
出现这个错误一般都是函数只找到声明但没有实现,或者是少了什么链接库,可以试试把那两个.h和.c文件直接加入工程中再试试,或者是有些函数后面把{}加上。
比如一些函数声明了,像下面这段代码:
~~~
class A
{
public:
A();
virtual ~A();
char m_x;
};
~~~
这里面构造函数和析构函数都没有加上{}。加上即可。
~~~
class A
{
public:
A(){};
virtual ~A(){};
char m_x;
};
~~~
或者你另外实现这个函数。
还有种情况就是没有添加库
这种情况下加一句代码就行了
我遇到的是Socket相关的库没加上,我加上下面的部分就对了
~~~
#pragma comment(lib, "ws2_32.lib") //这是链接API相关连的Ws2_32.lib静态库
~~~
一般加在stdafx.h里面就好了
如果出现这种情况就检查下有没有这玩意了
LINK : fatal error LNK1104: cannot open file "ws32_2.dll"
下面是地址,看看有没有
C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Bin\Ws2_32.dll
C:\WINDOWS\system32\ws2_32.dll
C:\WINDOWS\system32\dllcache\ws2_32.dll
';