900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 无法解析的外部符号xxx 该符号在函数xxx中被引用

无法解析的外部符号xxx 该符号在函数xxx中被引用

时间:2019-07-30 00:39:01

相关推荐

无法解析的外部符号xxx 该符号在函数xxx中被引用

无法解析的外部符号xxx 该符号在函数xxx中被引用

更多相关错误可查看:/weixin_44120025/article/details/115279563

下面主要讲述一个解决方案中包含多个项目且它们之间互相引用的情况。

在一个解决方案已经有多个项目的情况下创建一个项目(比如开源项目,我们在此基础上建立我们自己的工程),我们把lib静态链接库以及库目录都按照一定的要求进行处理,但是却出现一些无法解析的外部符号xxx 该符号在函数xxx中被引用的错误,不管是外部符号还是说函数xxx我们在自己的工程上几乎是没有使用过的,情况如下:

但是在生成项目的过程中还是出现如下BUG:

一开始我按照文章开头博客所说查找问题,但是并不能解决上述BUG(上述外部符号实际上都是Windows的API,正常情况下是不会出现问题的)。后来实在是没有办法,所有主动的查找外部符号对应的头文件,通过头文件找到其相应的lib库,主动使用#pragma comment将缺失的lib库引入。方式如下(使用第一个BUG举例):

其函数定义位于securitybaseapi.h头文件中,通过百度搜索,可以得知其对应的lib库如下:

/zh-hk/windows/win32/api/securitybaseapi/nf-securitybaseapi-getaclinformation

顾在main函数使用:#pragma comment(lib,“Advapi32.lib”)将lib库主动引入,生成项目如下:

BUG直接减半。其余BUG同理。

之后回想起来,作为Windows的官方API,不应没有引入上述lib库,然后又想到一个VS项目默认是有自己的附加依赖项的,随后查找发现如下:

发现实际上默认是继承我们需要的lib库的,由于我们主动定义自己了自己的附加依赖项,导致默认的被我们清除,所以变成未被引入lib库!这个问题博主查找BUG时间过久,顾在此记录。实际上我们只需定义我们自己的外部依赖项时,勾选:从父级或项目默认设置继承即可。如下:

记得点击确定后,属性页要确认或者应用。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。