关于静态编译出现的问题以及解决方法

很多时候我们需要连接外部的静态库生成程序,这时候经常会出现以下的一些问题:

.

无法解析的外部符号。。。。也就是说,你的程序里试用了这些个函数什么的,可是找不到实现体,就会报这样的错误,对,咱加上,稍微一百度,就能找到这些个所谓的外部符号对应的库文件:libpng.lib。这个是我做opencv程序的时候用到的函数(并非直接用到,而是间接间接的调用到的函数,该函数以及相关的函数被编译成目标文件grfmt_png.obj,并且打包进库文件libpng.lib。所以我们只需要把这个库文件添加进咱们的项目里就行了,具体方法:

1)首先,属性-配置属性-连接器-常规-附加库目录,里边加上此库对应的目录就行了,我机子里对应的是C:opencvuildx86vc12staticlib(所有opencv的静态库都放这里了)。

2)在属性-配置属性-连接器-常规-输入-附加依赖项 里边加进所需要的库文件(也就是你所要调用的函数的实现体包含文件)。

另外,有时候你需要添加系统(通常会是mfc等非系统库)对应的库文件,因为像静态连接这种方式,很多时候需要显式说明你要连接的外部库函数(而动态连接则不需要那么麻烦,调用时自然会在系统文件夹里找对应的动态库),所以出现以下这样的情况,请添加对应的静态库文件(不需要理会附加库目录是因为,当安装mfc时,系统会自动添加其库目录为系统目录)。



原文地址:https://www.cnblogs.com/iosDevZhong/p/4395231.html