C++中运用模版报“无法解析的外部符号”错误解决方法
2014-05-21 11:08
453 查看
最近新写了一个Socket通讯类SocketServer,在传输结构体和数字时运用到了模版函数,
然而在实现调用时,编译过程中模版函数会报“error LNK2019:无法解析的外部符号”。
经过查询发现出现这一问题的原因是C++编译机制的问题,
即模板不支持分离编译,具体原理见文章:点击打开链接
解决方法目前已知有三种:
一是把模版函数归总到一个SocketServer.template文件中,在调用时include,这种方法可编译成功,但VS好像不支持template文件的显示,代码都是黑色的
二是把SocketServer.cpp和SocketServer.h合并为SocketServer.h,即所有函数均在头文件里实现。
三是只把模版函数的实现放到头文件中,这样保留了SocketServer.cpp,方便此后的扩充(我采用了这种解决方法)
还有个白痴错误就是函数前没加"类名:"
欢迎补充~
然而在实现调用时,编译过程中模版函数会报“error LNK2019:无法解析的外部符号”。
经过查询发现出现这一问题的原因是C++编译机制的问题,
即模板不支持分离编译,具体原理见文章:点击打开链接
解决方法目前已知有三种:
一是把模版函数归总到一个SocketServer.template文件中,在调用时include,这种方法可编译成功,但VS好像不支持template文件的显示,代码都是黑色的
二是把SocketServer.cpp和SocketServer.h合并为SocketServer.h,即所有函数均在头文件里实现。
三是只把模版函数的实现放到头文件中,这样保留了SocketServer.cpp,方便此后的扩充(我采用了这种解决方法)
还有个白痴错误就是函数前没加"类名:"
欢迎补充~
相关文章推荐
- c++中调用python脚本提示 error LNK2001: 无法解析的外部符号 __imp_Py_Initialize等错误的解决方法
- c++中调用python脚本提示 error LNK2001: 无法解析的外部符号 __imp_Py_Initialize等错误的解决方法
- c++中调用python脚本提示 error LNK2001: 无法解析的外部符号 __imp_Py_Initialize等错误的解决方法
- C++中模板类使用友元模板函数 和友员非模版函数!使用不当出现编译错误:无法解析的外部符号…
- c++连接mysql并提示“无法解析的外部符号 _mysql_server_init@12”解决方法
- log4cplus使用过程中“LOG4CPLUS_WARN”: 找不到标识符和无法解析的外部符号(链接错误)的解决方法
- QT中添加Q_OBJECT时编译提示obj : error LNK2001: 无法解析的外部符号 "public: virtual struct QMetaObject const错误解决方法
- LNK2001:无法解析的外部符号 错误常见解决方法
- C++ ODBC 函数报无法解析的外部函数错误的解决方法
- c++连接mysql并提示“无法解析的外部符号 _mysql_server_init@12”解决方法
- 错误 1 error LNK2019: 无法解析的外部符号 __imp__pthread_create,该符号在函数 _main 中被引用 解决方法
- "链接器工具错误 LNK 2001 无法解析外部符号 __security_cookie " 解决方法
- VC中无法解析的外部符号错误解决
- 无法解析的外部符号 _WinMain@16,该符号在函数 ___tmainCRTStartup 解决方法
- gSoap的“error LNK2001: 无法解析的外部符号 _namespaces”解决方法
- LNK2001: 无法解析的外部符号 __iob问题的解决方法
- dcmtk提示无法解析的外部符号(unresolved external symbol)的解决方法
- 解决链接错误:error LNK2001: 无法解析的外部符号 __iob
- C++中使用类模板时出现:“error LNK2019: 无法解析的外部符号”的解决办法
- error LNK2019: 无法解析的外部符号(编程解决方法)(改)