fatal error LNK1120: xxxx unresolved externals

news2024/11/26 13:56:36

场景:
A项目Library,编译环境VS2008+DDKWarizd, 编译平台WIN7XP;
B项目驱动, 编译环境VS2008,编译平台Rlease32位,DDK版本相同,都是7.0

在B项目集成A项目的32位LIB库时,出现此错误,看错误很常见的找不到符号函数的实现代码,实际是DDK7.0 BUILD环境隐藏的bug;

2>Compiling resources...
2>Microsoft (R) Windows (R) Resource Compiler Version 6.1.6723.1
2>Copyright (C) Microsoft Corporation.  All rights reserved.
2>Linking...
2>xxxx.lib(xxxx.obj) : error LNK2001: unresolved external symbol __SEH_epilog4_GS
2>xxxx.lib(xxxx.obj) : error LNK2001: unresolved external symbol __SEH_epilog4_GS
2>xxxx.lib(xxxx.obj) : error LNK2001: unresolved external symbol __except_handler4
2>
2>fatal error LNK1120:  unresolved externals
2>xxxx - 18 error(s), 1 warning(s)
========== Rebuild All: 1 succeeded, 1 failed, 0 skipped ==========

因为A项目是通过DDKWarizd生成的驱动LIB,顺着ddkbuild.cmd脚本跟踪到,最终调用的是DDK目录下面的bin\setenv.bat文件,在文件中有这么一句条件判断,如果编译的平台是WinXP则不会设置BUFFER_OVERFLOW_CHECKS这个环境变量,这个变量也可以用来控制编译器的GS开关;
在这里插入图片描述

A项目的source文件中没有定义任何编译器选项,但默认GS是开启的,尽管目标平台选择的是WinXP

最好只能在source中增加一行,来关闭GS功能
USER_C_FLAGS=/GS-

随后编译的A项目LIB中没有引用GS相关函数了,B项目也可以顺利编译成功;

解决方案如下:

  • 在B项目中修改ntoskrnl.lib引用平台,改为DDK安装目录\lib\win7\i386,因为这个版本才导出GS相关符号
  • 在A项目中关闭GS功能,因为A、B项目32位环境都引用的DDK\lib\wxp\i386下的nt内核,两个项目都需要关闭GS保护,由于A项目使用方DDKWarizd生成,需要在sources文件中定义编译器选项USER_C_FLAGS=/GS-来关闭GS;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1606862.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux【实战】—— LAMP环境搭建 部署网站

目录 一、介绍 1.1什么是LAMP? 1.2LAMP的作用 二、部署静态网站 2.1 虚拟主机:一台服务器上部署多个网站 2.1.1 安装Apache服务 2.1.2 防火墙配置 2.1.3 准备网站目录 2.1.4 创建网站的配置文件 2.1.5 检查配置文件是否正确 2.1.6 Linux客户端…

润石科技(RUNIC)汽车电子应用方案和物料选型

一、润石科技(RUNIC)简介 江苏润石科技有限公司是一家专注于高性能、高品质模拟/混合信号集成电路研发和销售的高科技半导体设计公司。公司主要产品线分为两类:信号链和电源管理,其中信号链包含运算放大器、比较器、模拟开关、数…

Mac 部署 GPT-2 预训练模型 gpt2-chinese-cluecorpussmall

文章目录 下载 GPT-2 模型快速开始 GPT-2 下载 GPT-2 模型 https://huggingface.co/uer/gpt2-chinese-cluecorpussmall git clone https://huggingface.co/uer/gpt2-chinese-cluecorpussmall # 或单独下载 LFS GIT_LFS_SKIP_SMUDGE1 git clone https://huggingface.co/uer/gpt…

基于Spring Boot+Vue的校园网上店铺,开启便捷购物新模式

作者介绍:✌️大厂全栈码农|毕设实战开发,专注于大学生项目实战开发、讲解和毕业答疑辅导。 🍅获取源码联系方式请查看文末🍅 推荐订阅精彩专栏 👇🏻 避免错过下次更新 Springboot项目精选实战案例 更多项目…

递归 python

↵一、简单理解 解决问题的一种方法,它将问题不断的分成更小的子问题,直到子问题可以用普通的方法解决。通常情况下,递归会使用一个不停调用自己的函数。 【注】:每一次递归调用都是在解决一个更小的问题,如此进行下…

Leetcode - 128双周赛

目录 一,3110. 字符串的分数 二,3111. 覆盖所有点的最少矩形数目 三,3112. 访问消失节点的最少时间​编辑 写法一:朴素 Dijkstra(适用于稠密图,即边比较多的图) 写法二:堆优化 …

⑤【Shiro】SpringBoot整合Shiro,实现登录认证

个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~ 个人主页:.29.的博客 学习社区:进去逛一逛~ ⑤【Shiro】SpringBoot整合Shiro,实…

作为Boss,还在写代码。what?赶紧改掉这个坏毛病

有些创业中的老板,经常或者偶尔也要写代码,我听了很震惊呀,这叫创业吗?这不是给员工打工吗?其他重要的事情谁来干,这个毛病一定要改。 一、比起写代码,你还有更重要的事情要做 作为BOSS和创业…

.NET 爬虫从入门到入狱

目录 前言 1.💡使用HttpClient爬取数据 2.🚀模拟User-Agent 3.🤵使用HTML解析库 3.👌前端Price显示 4.🌱运行实例 获取金价Au 5.🧾使用正则表达式解析 6.💫获取BTC价格 7.✨获取CSDN热点…

【网站项目】书籍销售系统小程序

🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板&#xff…

【云计算】安全组和网络ACL的区别

安全组和网络ACL的区别 ACL(Access Control List)和 安全组(Security Group)是两种不同的网络安全控制机制,通常用于管理云计算平台中的网络访问权限。它们在功能和实现上有一些显著的区别: 辨析 范围不同&…

大数据------额外插件及技术------Git(完整知识点汇总)

Git 定义 它是分布式版本控制工具,主要用于管理开发过程中的源代码文件(如:Java类、xml文件、html页面等),在软件开发过程中被广泛应用 作用 代码回溯:快速回到某一代码历史版本版本切换:同一个…

【深度学习】Attention、Self-Attention、Multi-Head Attention

一、Attention 在CV领域,注意力机制通常分为通道注意力和空间注意力或者两者结合。 一张图像经backbone得到的特征通常包括多个通道,每个通道是一个像素矩阵,每个通道对任务的贡献不尽相同,单个通道的特征图中每个像素对任务的贡…

户外旅行摄影手册,旅游摄影完全攻略

一、资料前言 本套旅游摄影资料,大小295.47M,共有9个文件。 二、资料目录 《川藏线旅游摄影》杨桦.彩印版.pdf 《户外摄影指南》(Essential.Guide.to.Outdoor.photography.amateur)影印版.pdf 《旅行摄影大师班》(英)科尼什.扫描版.PDF 《旅行摄影…

Java垃圾回收1

1.对象什么时候可以被垃圾器回收 1.垃圾回收的概念 为了让程序员更专注于代码的实现,而不用过多的考虑内存释放的问题,所以, 在Java语言中,有了自动的垃圾回收机制,也就是我们熟悉的GC(Garbage Collection)。 有了垃圾…

网络编程ServerSocketChannel

ServerSocketChannel 1 非阻塞 vs 阻塞1.1 阻塞1.2 非阻塞1.3 多路复用 2 Selector2.1 创建2.2 绑定 Channel 事件2.3 监听 Channel 事件2.4 💡 select 何时不阻塞 3 处理 accept 事件💡 事件发生后能否不处理 4 处理 read 事件4.1 💡 为何要…

vscode绿绿主题setting config

下载插件Green Tree Theme 选greentree ctrl shift p找到setting {"workbench.colorTheme": "Green Tree","editor.fontSize": 16.5, // 字号"workbench.colorCustomizations": {"[Green Tree]": {"activityBarBadge.…

【Lattice FPGA 开发】Modelsim与Diamond联合仿真

本文讲解Modelsim与Diamond进行联合仿真步骤,以及对遇到问题的解决与说明。 文章目录 软件版本0. Diamond设置文件为仿真文件特别注意 1. Diamond设置仿真软件为Modelsim2. Modelsim编译Lattice的库文件2.1 新建文件夹存放库文件2.2 Modelsim中建立新的仿真库2.2.1…

探秘Redis:从数据类型到API

欢迎大家关注我的微信公众号“软件求生”,我们将会定期为大家带来更多有趣的技术分享和实用的开发技巧。感谢大家的支持! 大家好,我是小米,今天我们来聊一聊阿里巴巴面试中经常会遇到的一个热门话题——Redis数据类型和相关API。Redis作为一款高性能的键值对存储数据库,其…

LevelDB源码阅读笔记(1、整体架构)

LevelDB源码阅读笔记(1、整体架构) LeveDB源码笔记系列: LevelDB源码阅读笔记(0、下载编译leveldb) LevelDB源码阅读笔记(1、整体架构) 前言 对LevelDB源码的博客,我准备采用总…