无法解析外部符号 __security_cookie

本文详细介绍了在使用Microsoft Visual C++ 编译器时遇到链接器错误LNK2001的解决方法。通过调整项目属性设置,将/GS开关关闭,并增加附加依赖项bufferoverflowU.lib,可以有效解决无法解析外部符号的问题。适用于在Windows Server 2003 Service Pack 1或相关开发环境下遇到类似问题的开发者。

编译VC工程时出现了标题所示问题,资料搜索一下,在微软网站找到答案了,解决方法如下:
1)选择“项目”-》“属性”-》“C/C++”-》“代码生成”-》“缓冲区安全检查”,设为“否”
2)选择“项目”-》“属性”-》“链接器”-》“输入”-》“附加依赖项”,增加”bufferoverflowU.lib”
然后编译工程,解决问题。
下面是微软的原文,说的很冗长,但是很直接!
在 Windows Server 2003 Service Pack 1 通过 Win 32 软件开发工具包 (SDK) 或 Windows
Server 2003 Driver Development Kit (DDK) 生成源代码时可能会收到 ' 链接器工具错误 LNK
2001 ' 错误信息
文章编号 : 894573
最后修改 : 2007年3月27日
修订 : 1.2

症状
生成 32 位源代码或 64 位代码源代码在编译时或在链接时,您可能收到以下错误信息之一:

错误 1
链接器工具错误 LNK 2001
无法解析外部符号 __security_cookie ' '
错误 2
链接器工具错误 LNK 2001
无法解析外部符号 __security_check_cookie ' '
您以生成代码, 在 Windows Server 2003 Service Pack 1 使用或者 Microsoft Win 32 软件开发
工具包 (SDK) 对于 Microsoft Windows Server 2003 Service Pack 1 或 Microsoft
Windows Server 2003 Driver Development Kit (DDK)。
原因
在 Microsoft Visual Studio 2002, 新编译器开关名为 ' / GS ' 被引入到 Microsoft
Visual C++ 编译器。 当设置 “/ GS” 开关,编译器插入编译代码中缓冲区超限检测代码。

编译器函数, 编译器可能受到缓冲区溢出,在栈上插入安全 Cookie 之前返回地址。 安全 Cookie 是计算一个模块加载时间。 在函数上安
全 Cookie 值被推到堆栈。 函数退出, 上编译器 Helper 调用来确保的 Cookie 值是仍相同。 如果值更改, 这视为如符号是缓
冲区溢出堆栈损坏中。 因此, 您可以检测某些直接缓冲区溢出返回地址中。

即使 / GS 开关已得到显著改进和 Visual Studio 2005, Visual Studio 2003 中 / GS 开关保护用户
代码免受所有可能缓冲区溢出安全攻击,但是/ GS 开关并不有助于防止用户代码从所有可能缓冲区溢出安全攻击。 因小性能影响通过 / GS 开
关, 新版本的 VisualC++ 编译器自动设置 / GS 切换 ' ' ' '。 当 / GS 开关设置, 应用程序接收缓冲区溢出增强保护
在运行时 ' '。这可能大大减少该应用程序是容易受到攻击。

默认情况下, 设置 VisualC++ 编译器所附带 Platform SDK 用于 Windows Server 2003 Service
Pack 1 / GS 开关 ' '。 源代码编译时编译器引入函数上堆栈上安全 Cookie, 插入引用到代码。 然后, 函数退出上检查是安
全 Cookie 值。 此外, PlatformSDK 中的大多数库已生成与 / GS 开关设置 ' '。 库已引用是以提供所需程序代码 /
GS 切换增强保护运行时 ' '。

VisualStudio, 用于代码中 / GS 开关位于 C 运行时库 ' '。 这是由链接器, 请求中默认库。 但是, 版本所附带
PlatformSDK C 运行时库有关 VisualStudio 没有相同代码作为 C 运行时库。 发生用户构建应用程序和服务可针对不同模式
是操作系统此差异是因为允许 PlatformSDK。 对安全 Cookie 添加到编译代码验证不得不以不同方式执行。 不同方式取决于什么操作系
统模式服务或应用程序中运行。它因此, 已决定来提供三库实现安全 Cookie 的验证。bufferoverflowU.lib 此库实现功能用于
安全 Cookie 验证一起使用以用户模式和在使用 Win32API 应用程序。 大多数应用程序链接到此库。
bufferoverflowK.lib 此库实现对工作安全 Cookie 检查是操作系统内核模式中。 服务和子系统在内核模式运行一定要链接到此
库。
bufferoverflow.lib 该库在用户模式实现安全 Cookie 验证一起使用的功能。 由于 bufferoverflow.lib
在服务和应用不使用 Win32API 中可用但是, bufferoverflow.lib 与不同在 bufferoverflowU.lib。

解决方案
要解决错误是由链接器, 引发您需要通过之一以前提到 bufferoverflow*.lib 库链接项目。 例如, 下列程序是一个简单程序, 可
通过使用平台 SDK 生成。
#include #include void mymethod(char* szIn) { char szBuf[10]; strcpy
(szBuf, szIn); puts(szBuf);}int main(int argc, char* argv[]) { if
(argc>1) mymethod(argv[1]);}

以下代码示例显示正确编写代码要求对缓冲区溢出增强保护。 VisualC++ 编译器向编译代码添加增强保护。 无法编译代码链接因为链接器无法解析
对下列引用:? __security_cookie
? __security_check_cookie

>cl a.cppMicrosoft (R) C/C++ Optimizing Compiler Version 14.00.40310.32 for AMD64Copyright (C) Microsoft Corporation. All rights reserved.a.cppMicrosoft (R) Incremental Linker Version 8.00.40310.31Copyright (C) Microsoft Corporation. All rights reserved./out:a.exea.obja.obj : error LNK2019: unresolved external symbol __security_cookie referenced in function 'void __cdecl mymethod(char *)' (?mymethod@@YAXPEAD@Z)a.obj : error LNK2019: unresolved external symbol __security_check_cookie referenced in function 'void __cdecl mymethod(char *)' (?mymethod@@YAXPEAD@Z)a.exe : fatal error LNK1120: 2 unresolved externals

要解决这些错误, 您需要指定链接器必须也使用 bufferoverflowU.lib。 这假定应用程序面向用户模式, 可使用
Win32API。

>cl a.cpp bufferoverflowU.libMicrosoft (R) C/C++ Optimizing Compiler Version 14.00.40310.32 for AMD64Copyright (C) Microsoft Corporation. All rights reserved.a.cppMicrosoft (R) Incremental Linker Version 8.00.40310.31Copyright (C) Microsoft Corporation. All rights reserved./out:a.exea.objbufferoverflowU.lib>

如果您使用两步生成过程, 应用以下代码示例。

>cl –c a.cpp bufferoverflowU.libMicrosoft (R) C/C++ Optimizing Compiler Version 14.00.40310.32 for AMD64Copyright (C) Microsoft Corporation. All rights reserved.a.cpp>link a.obj bufferoverflowU.libMicrosoft (R) Incremental Linker Version 8.00.40310.31Copyright (C) Microsoft Corporation. All rights reserved.>

参考
有关: / GS 缓冲区安全检查在 VisualC++ 编译器选项, 请访问以下 Microsoft Developer Network
(MSDN) Web 站点 ' '
http://msdn2.microsoft.com/en-us/library/8dbf701c(vs.71).aspx (http://
msdn2.microsoft.com/en-us/library/8dbf701c(vs.71).aspx)
有关编译器安全检查, 请访问以下 MSDN 网站:
http://msdn2.microsoft.com/en-us/library/aa290051(VS.71).aspx (http://
msdn2.microsoft.com/en-us/library/aa290051(VS.71).aspx)

内容概要:本文围绕“阶梯碳下考虑P2G-CCS供需灵活响应的IES优化调度”展开,基于Matlab平台构建综合能源系统(IES)在阶梯式碳交易机制下的优化调度模型。研究深度融合电制气(P2G)碳捕集、利用封存(CCS)技术,结合需求侧灵活响应机制,旨在提升系统的低碳运行能力经济性。通过建立多能流耦合的优化模型,协调电力、天然气、热力等多种能源形式的协同调度,有效降低系统碳排放强度,并借助YALIMIP工具包调用求解器进行高效求解。文档提供了完整的代码实现、模型构建流程结果分析方法,涵盖从问题建模到仿真实现的全过程,具备较强的可复现性科研参考价值。; 适合人群:具备电力系统、能源系统或优化建模相关背景的研究生、高校教师及工程技术人员,尤其适合从事综合能源系统、碳减排策略、P2GCCS技术集成研究的专业人员,需熟练掌握Matlab编程基本的数学规划知识。; 使用场景及目标:①用于研究阶梯式碳交易政策下综合能源系统的低碳经济调度策略;②支撑P2G-CCS技术需求响应机制在IES中的仿真集成性能评估;③作为撰写高水平学术论文(如EI/SCI收录)的技术基础复现资源,推动碳中和背景下能源系统优化方向的创新研究。; 阅读建议:建议结合百度网盘提供的完整代码资料包,按照模块逐步调试程序,重点理解目标函数的设计逻辑、碳交易成本的建模方式、约束条件的数学表达及求解器的配置方法,同时关注多能耦合设备的建模细节,配合公众号“荔枝科研社”获取持续的技术支持案例拓展。
内容概要:本文系统研究了基于卷积神经网络(CNN)支持向量机(SVM)融合的CNN-SVM混合模型在数据分类预测中的应用,尤其聚焦于工业故障识别领域。通过Matlab平台实现,该方法首先利用CNN强大的多层次特征提取能力对原始输入数据进行深度特征学习,自动捕获关键局部模式空间结构信息,随后将提取的高层特征作为输入传递至SVM分类器,借助SVM在高维空间中小样本条件下卓越的分类性能泛化能力完成最终判别任务。文中详尽阐述了模型的整体架构设计、网络参数配置、训练优化流程及特征迁移机制,充分结合了深度学习在特征表达上的优势传统机器学习在分类决策上的稳健性。实验部分通过实际故障数据集验证了该混合模型相较于单一CNN或SVM模型在分类准确率、鲁棒性和抗过拟合能力方面的显著提升,证明了其在复杂故障诊断任务中的有效性先进性; 适合人群:具备一定机器学习深度学习理论基础,熟悉Matlab编程环境,从事故障诊断、模式识别、智能制造、电力系统监控或工业数据分析等相关领域的研究生、科研人员及工程技术开发者; 使用场景及目标:① 应用于旋转机械、电力设备、航空航天等领域的多类别故障识别状态监测;② 掌握深度特征提取传统分类器融合的技术路径,提升小样本、高噪声环境下数据分类的精度可靠性;③ 为撰写高水平学术论文、开展科研项目或工程实践提供可复现的算法框架完整代码支持; 阅读建议:读者应深入理解CNNSVM的协同工作机制,重点分析特征提取层分类层之间的接口设计,建议动手运行并调试所提供的Matlab代码,尝试在不同数据集上进行迁移实验参数调优,以全面掌握该混合模型的应用技巧优化策略。
源码下载地址: https://pan.quark.cn/s/4a2017818320 ### 股票信息采集(实时+历史)在金融行业,特别是股票交易领域,获取精准且及时的股票信息具有核心地位。本文将详细阐述如何借助网络服务来采集股票的实时和历史数据,涵盖股票信息采集的基础途径、具体执行策略以及相关的API接口说明等内容。#### 一、股票信息采集概述股票信息的采集主要可以划分为两大类:实时信息和历史信息。实时信息指的是当前市场环境下最新的股票价格等动态信息;而历史信息则包含了股票过去的交易价格走向及其他相关统计数据。这两类信息对于投资者而言都具有极其重要的意义,能够辅助他们更加深入地分析市场走向并制定相应的投资策略。#### 二、实时信息采集途径##### 1. WebService途径- **接口说明**:文中所提及的`http://www.webxml.com.cn/WebServices/ChinaStockWebService.asmx`是提供中国股市数据的WebService服务。该服务由WebXml.com.cn提供,主要用于获取股票的即时信息。- **调用方法**: - `getStockImageByCode`:依据股票代码来获取股票的GIF格式实时走势图,返回的是图片的链接地址。例如`getStockImageByCode?theStockCode=sh000001`。 - `getStockImageByteByCode`:前者功能相似,但返回的是二进制格式的图片数据。 - `getStockInfoByCode`:根据股票代码来获取股票的一系列信息,包括但不限于股票名称、当前价格、开盘价格、收盘价格等,这些信息以字符串数组的形式返回。##...
内容概要:本文提出了一种针对梯级水光互补系统的短期优化调度模型,旨在最大化可再生能源的可消纳电量期望。该模型深度融合水电光伏发电的互补特性,通过建立精确的数学优化框架实现联合调度,有效提升系统对波动性可再生能源的接纳能力。研究采用Matlab进行算法仿真,可能引入蝙蝠算法、粒子群算法等智能优化方法求解具有多约束、非线性特征的复杂调度问题,确保在足水电机组运行约束、光伏出力波动性和电网安全稳定要求的前提下,实现发电效益能源利用效率的最大化,适用于高比例可再生能源接入背景下的电力系统实际调度需求。; 适合人群:面向具备电力系统分析、可再生能源利用或优化调度等相关专业知识背景,熟练掌握Matlab编程工具的科研人员、高校研究生及工程技术人员;特别适合致力于水光互补运行、新能源消纳提升、智能优化算法在能源系统中应用等方向的研究者。; 使用场景及目标:①应用于流域梯级水电站大型地面光伏电站的协同优化运行;②服务于区域电网提升对间歇性可再生能源的消纳能力,降低弃光弃水率;③为电力系统短期调度提供科学决策支持,核心目标是最大化可再生能源的可消纳电量期望值,保障电力供应的经济性稳定性。; 阅读建议:建议读者结合提供的Matlab代码深入剖析模型构建逻辑算法实现细节,重点关注目标函数的数学表达、系统物理约束(如水量平衡、机组出力、电网潮流)的建模方式以及智能优化算法的参数设置收敛性能。可通过复现和调试代码加深理解,并尝试将该优化思路迁移至风-光-储等其他多能互补系统的调度研究中。
内容概要:本文聚焦“基于改进粒子群算法的多无人机协同航迹规划”,结合Matlab代码实现,系统阐述了智能优化算法在复杂三维空间中多无人机路径协同规划的应用。内容涵盖航迹规划的建模方法、避障机制、任务协同策略及多目标优化函数设计,如路径最短、能耗最低、威胁规避等,并通过具体算法实现案例展示了从理论构建到仿真实验的全过程。文档不仅提供了可复现的代码框架,还整合了无人机控制、编队飞行、协同任务分配等关键技术模块,形成面向科研创新的综合性技术资源。此外,文中列举了多种智能算法(如RRT、蚁群、A*等)在路径规划中的对比研究,增强了方案的可扩展性学术参考价值。; 适合人群:具备一定编程基础,熟练掌握Matlab/Simulink环境,从事自动化、控制工程、人工智能、航空航天、机器人或无人机系统研究的科研人员及硕士、博士研究生。; 使用场景及目标:① 实现多无人机在动态复杂环境下的协同航迹规划实时避障;② 复现高水平EI/SCI期刊论文中的优化算法仿真结果;③ 基于现有代码框架进行算法改进创新研究,支撑学术论文撰写科研项目申报;④ 掌握智能优化算法在路径规划、任务分配等工程问题中的建模思路实践方法。; 阅读建议:建议读者结合公众号“荔枝科研社”提供的完整资源包(含Matlab代码、仿真模型、论文资料)进行系统学习,优先运行示例代码以理解算法执行流程,并尝试调整参数设置或引入新的约束条件(如动态障碍物、通信限制),逐步实现从复现到自主创新的跃迁。
代码下载地址: https://pan.quark.cn/s/a8b756c18f9a Live2D Widget English 特性 在网页中添加 Live2D 看板娘 轻量级,除 Live2D Cubism Core 外无其他运行时依赖 核心代码由 TypeScript 编写,易于集成 注:以上人物模型仅供展示之用,本仓库并不包含任何模型。 你也可以查看示例网页: 在 米米的博客 的左下角可查看效果 demo/demo.html,展现基础功能 demo/login.html,仿 NPM 的登陆界面 使用 如果你是小白,或者只需要最基础的功能,那么只用将这一行代码加入 html 页面的 或 中,即可加载看板娘: 添加代码的位置取决于你的网站的构建方式。 例如,如果你使用的是 Hexo,那么需要在主题的模版文件中添加以上代码。 对于用各种模版引擎生成的页面,修改方法类似。 如果网站启用了 PJAX,由于看板娘不必每页刷新,需要注意将该脚本放到 PJAX 刷新区域之外。 但是! 我们强烈推荐自己进行配置,让看板娘更加适合你的网站! 如果你有兴趣自己折腾的话,请看下面的详细说明。 配置 你可以对照 的源码查看可选的配置项目。 会自动加载两个文件: 和 。 会创建 函数,这就是加载看板娘的主函数。 函数接收一个 Object 类型的参数,作为看板娘的配置。 以下是配置选项: 模型仓库 本仓库中并不包含任何模型,需要单独配置模型仓库,并通过 选项进行设置。 旧版本的 函数支持 参数,这要求用户自行搭建后端,可以参考 live2d_api。 后端接口会对模型资源进行整合并动态生成 JSON 描述文件。 自 1.0 版本起,相关功能已通过前端实现,因此不再需要专门的 ,所有模型资源都可...
内容概要:本文围绕基于模型预测控制(MPC)对无人水面艇(USV)进行自主控制的研究展开,系统阐述了利用Matlab实现MPC算法对USV运动轨迹的高精度控制优化过程。文中详细介绍了USV的动力学建模方法,构建了适用于MPC框架的预测模型,并设计了包含状态误差、控制增量和约束条件的目标函数,实现了对未来状态的滚动优化实时反馈校正。通过Matlab仿真实验验证了该方法在复杂海况下的路径跟踪能力、抗干扰性能及控制稳定性,充分展现了MPC在提升无人船自主导航智能化水平方面的显著优势。同时,文档还列举了多项相关科研方向配套代码资源,涵盖路径规划、状态估计、协同控制等领域,凸显其在智能海洋装备自动化系统中的广泛应用前景; 适合人群:具备自动控制理论基础、熟悉Matlab/Simulink编程环境,从事无人系统、船舶自动化、智能控制、 robotics 等方向的研究生、科研人员及工程技术人员; 使用场景及目标:① 深入掌握MPC在非线性、欠驱动系统如USV中的建模控制器设计方法;② 学习先进控制算法在实际工程系统中的仿真实现流程;③ 借助提供的完整代码资源开展科研复现、论文撰写、项目开发或教学示范; 阅读建议:建议结合Matlab代码同步阅读,重点理解系统建模推导、MPC优化问题构建、约束处理技巧及仿真结果分析过程,同时可参考文中提及的其他研究主题拓展技术视野,提升综合科研能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值