error LNK2019: unresolved external symbol

原创 2010年08月01日 03:29:00

error LNK2019: unresolved external symbol

(2007-05-28 10:23:43)

错误是解决了一个又一个,记下来权当是经验了。
共有11个类似的错误,我列出1个来。
模板:
template<class T>
void Blur(T* SourceImage, const int Width, const int Height);
 
template void
Blur<unsigned char>
(unsigned char*, const int, const int);
 
但链接时出错
Linking...
Image_demoDoc.obj : error LNK2019: unresolved external symbol "void __cdecl Blur<unsigned char>(unsigned char *,int,int)" (??$Blur@E@@YAXPAEHH@Z) referenced in function "void __cdecl OnBlur(struct HWND__ *)" (?OnBlur@@YAXPAUHWND__@@@Z)
Release/Image_demo.exe : fatal error LNK1120 : 11 unresolved externals
 
折腾了4个小时,终于搞出来了。当然类似的错误百度搜索一大堆。我也查出原因了:模板声明和实现要放在同一文件夹中 ,我原先把声明放在了.h文件中,把实现放在了.cpp文件中。改了后运行还是出错。真是奇怪!我还以为是什么大的错误。后来重新启动了下VS2005就好了。原来我修改后,编译环境还以以前就的中间文件来编译,怪不得改了后还是没用。现在发现,有时候这VC环境还是有点“反应慢”。

其实,LNK2019错误一般都是 compile是能找到相应的header (.h)文件,但链接时找不到相应的 lib 库文件(也含dll文件)。如 昨天调试时再linux下 pointcloudviewerJ 项目能compile 和link 正确,但在 windows下设置了项目 属性 后 能compile 但link 时 报错如下:
1>Linking...
1>LINK : D:/Experiment_Data/Microsoft VC9/PointCloudViewerJ/Debug/PointCloudViewerJ.exe not found or not built by the last incremental link; performing full link
1>main.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall osgGA::StateSetManipulator::StateSetManipulator(class osg::StateSet *)" (__imp_??0StateSetManipulator@osgGA@@QAE@PAVStateSet@osg@@@Z) referenced in function _main
1>main.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall osgGA::TrackballManipulator::TrackballManipulator(void)" (__imp_??0TrackballManipulator@osgGA@@QAE@XZ) referenced in function _main
。。。。。。。。
D:/Experiment_Data/Microsoft VC9/PointCloudViewerJ/Debug/PointCloudViewerJ.exe : fatal error LNK1120: 11 unresolved externals
这就是说一个link失败,使由于osgGA::StateSetManipulator::............的unresolved external symbol,也就是说 一定是osgGA库出了问题 。check 项目属性,发现 Additional Dependencies 中没有osgGA.lib  ,  所以 加上 osgGAd.lib(因为用的是Debug版)。rebuild 项目。compile 和link 通过。
另:有时候前面函数的声明 与 后面的  函数的定义 时的参数类型不同时,compile能通过,但link会出现LNK2019错误!
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

关于error LNK2001: unresolved external symbol "__declspec(dllimport) public

早上用vs2005创建了vc++的MFC Application,要使用别人编译的dll进行压力测试代码的编写。工程属性设置好了,结果调用dll中的一个接口时,出现了下面的错误:         er...

Error LNK2019:Unresolved External Symbol 解决方案

参考:http://www.educity.cn/wenda/351518.html Error LNK2019:Unresolved External Symbol *** Referenced ...

error LNK2019: unresolved external symbol "public 错误的出现原因.

从网上查询中发现这个问题 有很多原因,大多数 是和链接库有关. 我的程序也出现了这个错误,经过仔细检查发现,是类定义了一个函数而没有实现,也会出现这样的问题,以后切忌 切忌!! 1>main.obj ...

C++ error LNK2019: "unresolved external symbol"解决方法

1>  LINK : D:\code\OpenGLTest\Debug\OpenGLTest.exe not found or not built by the last incremental li...

xx.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) 错误

在vs2010下用别人提供的lib开发win32程序,编译时出现: Dummy.obj : error LNK2019: unresolved external symbol "__declspec...
  • klzs1
  • klzs1
  • 2013-03-11 16:10
  • 1115

腾讯开源ncnn:示例程序运行

本博记录为卤煮使用时的记录,属于事后回忆记录,如有疏漏,请指正。 卤煮:非文艺小燕儿 本博地址:ncnn:示例程序运行 感谢开源共享的各位大牛们,让我们能够站在巨人的肩膀上前行。 ncnn g...

C/C++ socket编程教程之六:使用listen(),accept(),write(),read()函数

对于服务器端程序,使用 bind() 绑定套接字后,还需要使用 listen() 函数让套接字进入被动监听状态,再调用 accept() 函数,就可以随时响应客户端的请求了。 listen() ...

无法解析的外部符号的几种可能(lib方面的)

无法解析的外部符号的几种可能   1. lib 文件未引入。可使用“#pragma comment(lib, “winsock.lib”) ”语句添加 lib 引用,也可在项目依赖里添加...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)