vs2019 - warning LNK4099: 未找到 PDB

ops/2024/10/19 2:15:36/

文章目录

vs2019__warning_LNK4099__PDB_1">vs2019 - warning LNK4099: 未找到 PDB

概述

工程中用到了一个开源的静态库,在工程为debugx64时,编译警告如下:

1>xlsxwriter_debug_x64.lib(drawing.obj) : warning LNK4099: 未找到 PDB“xlsxwriter.pdb”(使用“xlsxwriter_debug_x64.lib(drawing.obj)”或在“D:\my_dev\my_local_git_prj\soft\exp\exp009TestLink4098MsvcrtLib\main\x64\Debug\xlsxwriter.pdb”中寻找);正在链接对象,如同没有调试信息一样
1>xlsxwriter_debug_x64.lib(format.obj) : warning LNK4099: 未找到 PDB“xlsxwriter.pdb”(使用“xlsxwriter_debug_x64.lib(format.obj)”或在“D:\my_dev\my_local_git_prj\soft\exp\exp009TestLink4098MsvcrtLib\main\x64\Debug\xlsxwriter.pdb”中寻找);正在链接对象,如同没有调试信息一样
1>xlsxwriter_debug_x64.lib(hash_table.obj) : warning LNK4099: 未找到 PDB“xlsxwriter.pdb”(使用“xlsxwriter_debug_x64.lib(hash_table.obj)”或在“D:\my_dev\my_local_git_prj\soft\exp\exp009TestLink4098MsvcrtLib\main\x64\Debug\xlsxwriter.pdb”中寻找);正在链接对象,如同没有调试信息一样

笔记

原因

因为这个开源工程的安装程序做的不好,安装时,不管是debug版还是release版,.lib的名称都相同。
我包进工程时,按照debug/release的静态库编译结果,将.lib改名了。
另外就是.pdb没有随.lib一起拷贝到工程用。

解决方法:

  • 将.lib的工程输出名字改成最终要用的名字
    在这里插入图片描述
  • 确认预编译宏中有_DEBUG定义,如果没有,手工添加上。如果工程是CMAKE的,很有可能没有_DEBUG宏。
    在这里插入图片描述
  • 确认静态库工程有调试信息的产生选项
    在这里插入图片描述
  • 开源工程提供的INSTALL工程在自己改了库输出名称后,就不好使了。
    自己手工编译工程,将.lib, .pdb一同拷贝出来用。

再编译工程,一切都正常了

#include "xlsxwriter/include/xlsxwriter.h"// 如果包错了静态库, 就会出现LINK4098的警告
//  warning LNK4098: 默认库“msvcrt.lib”与其他库的使用冲突;请使用 /NODEFAULTLIB:library
#if (defined(_DEBUG) && defined(_WIN64))
#pragma comment(lib, "xlsxwriter/lib/xlsxwriter_debug_x64.lib")
#elif (defined(NDEBUG) && defined(_WIN64))
#pragma comment(lib, "xlsxwriter/lib/xlsxwriter_release_x64.lib")
#else
#error xlsxwriter only support debug/release + x64
#endif // #if (defined(_DEBUG) && defined(WIN64))void CmainDlg::OnBnClickedButtonTest()
{worksheet_write_string(NULL, 0, 0, NULL, NULL);// worksheet_write_string(p_sheet, row, col, strOpt.UnicodeToUTF8(csCell.GetString()).c_str(), NULL);
}

END


http://www.ppmy.cn/ops/21183.html

相关文章

裸金属服务器的优势有哪些?

裸金属服务器是一台兼具云计算服务功能和提供物理设备性能的服务器,是硬件和软件优势结合的产物,裸金属服务器不使用传统的虚拟化或云计算软件来管理资源,而是通过硬件来直接控制和访问计算机资源,有着很高的性能和可靠性。 裸金属…

linux下误删的文件恢复

Linux 对于linux下误删的文件,是否真的无法通过软件进行恢复呢? 误删文件还原可以分为两种情况 一种是删除以后在进程存在删除信息一种是删除以后进程都找不到,只有借助于工具还原。 这里只分析文件被删除后,相关进程还存在的情况 这种…

Elasticsearch概念 使用docker安装Elasticsearch和kibana

目录 一、Elasticsearch概念 倒排索引和正向索引 正向和倒排 二、ES安装 三、安装 kibana 四、IK分词器 下载ES中文分词器 扩展或停用词条 一、Elasticsearch概念 倒排索引和正向索引 正向索引 就像在mysql数据中搜索非主键字段的内容,就需要逐条数据的去查…

Vulnhub-DC 7-9 提权、端口敲门

C-7-Drupal-脚本文件提权 Vulnhub靶机介绍 Vulnhub是个提供各种漏洞平台的综合靶场,可供下载多种虚拟机进行练习,本地VM打开即可,像做游戏一样去完成渗透测试、提权、漏洞利用、代码审计等等有趣的实战。 靶机DC7还是只有拿到root权限才可以发…

【VUE】Vue中实现树状表格结构编辑与版本对比的详细技术实现

Vue中实现树状表格结构编辑与版本对比的详细技术实现 在Vue中,创建一个可编辑的树状表格并实施版本对比功能是一种需求较为常见的场景。在本教程中,我们将使用Vue结合Element UI的el-table组件,来构建一个树状表格,其中包含添加、…

全程免费的ssl证书申请——七步实现网站https

全程免费的ssl证书申请步骤如下: 1 准备工作 首先确定好需要的证书类型,如单域名证书、通配符证书和多域名证书,准备好需要安装证书的域名。 2 选择CA 选择提供免费证书的服务商——JoySSL,并访问其官方网站,创建一…

骑砍2霸主MOD开发(6)-使用C#-Harmony修改本体游戏逻辑

一.C#-Harmony反射及动态注入 利用C#运行时环境的反射原理,实现对已加载DLL,未加载DLL中代码替换和前置后置插桩. C#依赖库下载地址:霸王•吕布 / CSharpHarmonyLib GitCodehttps://gitcode.net/qq_35829452/csharpharmonylib 根据实际运行.Net环境选择对应版本的0Harmony.dll…

web server apache tomcat11-14-CGI

前言 整理这个官方翻译的系列,原因是网上大部分的 tomcat 版本比较旧,此版本为 v11 最新的版本。 开源项目 从零手写实现 tomcat minicat 别称【嗅虎】心有猛虎,轻嗅蔷薇。 系列文章 web server apache tomcat11-01-官方文档入门介绍 web…