vs2013 32位 编译的 dll,重新用vs2022 64位编译,所遇问题记录
目录
一、vs2013 32 DLL 转 VS2022 64 DLL 所遇问题
1、 LNK2038: 检测到“_MSC_VER”的不匹配项: 值“1800”不匹配值“1900”
2、原先VS2013 现在 VS2022 导致的vsnprintf 重定义问题
3、 无法解析的外部符号 __vsnwprintf_s
4、无法解析的外部符号__imp__CertFreeCertificateContext
5、无法解析的外部符号__iob_func
6、LNK1218: 警告被视为错误 - 没有生成“object”文件
7、end()找不到
8、使用64位openssl库
9、优化策略 或 运行时库 尽量一致
本打算用VS2013 编译64位的,结果 集成到vs2022 中时,因为所用的C++标准不同,因此导致不兼容,只能用VS2022 重新编译下,期间 编译优化策略也要保持一致,这里都禁止优化。
一、vs2013 32 DLL 转 VS2022 64 DLL 所遇问题
1、 LNK2038: 检测到“_MSC_VER”的不匹配项: 值“1800”不匹配值“1900”
You are trying to link objects compiled by different versions of the compiler. That’s not supported in modern versions of VS, at least not if you are using the C++ standard library. Different versions of the standard library are binary incompatible and so you need all the inputs to the linker to be compiled with the same version. Make sure you re-compile all the objects that are to be linked.
The compiler error names the objects involved so the information the question already has the answer you are looking for. Specifically it seems that the static library that you are linking needs to be re-compiled.
你在尝试着将编译自不同版本编译器的对象链接起来。在现代版本的 VS 中这是不被支持的,至少在你使用了 C++ 标准库之后就不支持了。不同版本的标准库之间是二进制不兼容的,因此你需要使用统一版本的编译器来编译其所有的输入文件。请你需要链接的对象都全部重新编译了。
使用VS2022 重新编译下
_MSC_VER 为 1800,对应了 Visual Studio 2013
2、原先VS2013 现在 VS2022 导致的vsnprintf 重定义问题

在宏定义处,加上编译版本选择
#if defined(_MSC_VER)&&_MSC_VER<1900#define snprintf _snprintf#define vsnprintf _vsnprintf#define vsnwprintf _vsnwprintf
#endif
3、 无法解析的外部符号 __vsnwprintf_s

error LNK2019: 无法解析的外部符号 __vsnwprintf_s
原因:vs2015以上 默认编译时将许多标准库采用内联方式处理,因而没有可以链接的标准库文件,所以要专门添加标准库文件来链接标准库中的函数
工程->右键属性->链接器->输入->附加依赖项 添加 legacy_stdio_definitions.lib
4、无法解析的外部符号__imp__CertFreeCertificateContext
因为openssl库使用了windows的一个密码学库: Crypt32
也把它加上
Crypt32.lib
legacy_stdio_definitions.lib
5、无法解析的外部符号__iob_func
在 VS2015 以上中 __iob_func 改成了 __acrt_iob_func,所以代码中需要增加一个名为 __iob_func 转换函数
在头文件中,
添加转换函数
#if _MSC_VER>=1900
#include "stdio.h"
_ACRTIMP_ALT FILE* __cdecl __acrt_iob_func(unsigned);
#ifdef __cplusplus
extern "C"
#endif
FILE* __cdecl __iob_func(unsigned i) {return __acrt_iob_func(i);
}
#endif /* _MSC_VER>=1900 */
6、LNK1218: 警告被视为错误 - 没有生成“object”文件

已经设置了否,还是有这个错误
后来发现,连接器哪里 还有个链接器 警告视为错误

7、end()找不到
改为 : std::map<_Kty, _Ty>::end()
template<typename _Kty=size_t,typename _Ty=void*>
class CSafeMap: protected std::map<_Kty,_Ty>
{CMyMutex m_mutex;
public:typedef int(*ENUM_SAFE_MAP)(_Kty,_Ty,void*);_Ty lockedFind(_Kty seq) {_Ty p=0;typename std::map<_Kty,_Ty>::iterator it=std::map<_Kty,_Ty>::find(seq);
#ifdef _WIN32if(it!= std::map<_Kty, _Ty>::end()) {
#elseif(it!=std::map<_Kty,_Ty>::end()) {
#endifp=it->second;}return p;}void lockedAdd(_Kty seq,_Ty p) {
#ifdef _WIN32std::map<_Kty, _Ty>::insert(std::make_pair(seq,p));
#elsestd::map<_Kty,_Ty>::insert(std::make_pair(seq,p));
#endif}_Ty lockedRemove(_Kty seq) {_Ty p=0;typename std::map<_Kty,_Ty>::iterator it=std::map<_Kty,_Ty>::find(seq);
#ifdef _WIN32if(it!= std::map<_Kty, _Ty>::end()) {
#elseif(it!=std::map<_Kty,_Ty>::end()) {
#endifp=it->second;
#ifdef _WIN32std::map<_Kty, _Ty>::erase(it);
#elsestd::map<_Kty,_Ty>::erase(it);
#endif}return p;}
8、使用64位openssl库
一开始编译很多错误,后来意识到,可能使用的openssl库,是32位的,所以网上又找了64位的编译后,才走上正轨。
9、优化策略 或 运行时库 尽量一致
如果还有问题,可以将dll 、目标工程,采用同样的优化策略

还不行的话,运行库 可设置为一样 后试试

,
相关文章:
vs2013 32位 编译的 dll,重新用vs2022 64位编译,所遇问题记录
目录 一、vs2013 32 DLL 转 VS2022 64 DLL 所遇问题 1、 LNK2038: 检测到“_MSC_VER”的不匹配项: 值“1800”不匹配值“1900” 2、原先VS2013 现在 VS2022 导致的vsnprintf 重定义问题 3、 无法解析的外部符号 __vsnwprintf_s 4、无法解析的外部符号__imp__CertFreeC…...
Linux_CentOS_7.9部署Docker以及镜像加速配置等实操验证全过程手册
前言:实操之前大家应该熟悉一个新的名词DevOps 俗称开发即运维、新一代开发工程师(Development和Operations的组合词)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障&…...
强引用和弱引用
什么是弱引用和强引用 强引用: JavaScript 中强引用:对象的引用在 JavaScript 中是强引用,也就是将一个引用对象通过变量或常量保存时,那么这个变量或常量就是强引用,这个对象就不会被回收。 弱引用: JavaS…...
tp6 实现excel 导入功能
在项目根目录安装 composer require phpoffice/phpspreadsheet 我们看一下郊果图,如下 点击导入excel表格数据 出现弹窗选择文件,控制台打开输出文档内容 前端layui代码 <form id"uploadForm" class"form-horizontal" encty…...
【C++】类和对象(中篇)
类和对象 类的六大默认成员函数一、构造函数1. 构造函数的概念2. 构造函数的特性 二、析构函数1. 析构函数的概念2. 析构函数的特性 三、拷贝构造函数1. 拷贝构造函数的概念2. 拷贝构造函数的特征 四、赋值运算符重载1. 运算符重载2. 赋值运算符重载 五、取地址及 const 取地址…...
大数据处理架构详解:Lambda架构、Kappa架构、流批一体、Dataflow模型、实时数仓
前言 本文隶属于专栏《大数据理论体系》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构和参考文献请见大数据理论体系 姊妹篇 《分布式数据模型详解:OldSQL &…...
双指针解决n数之和问题
1. 两数之和 1. 两数之和 将时间复杂度降到O(n); class Solution {// 双指针public int[] twoSum(int[] nums, int target) {int nnums.length;int l0;while(l<n){int rn-1;// 找到第一个可能nums[l]nums[r]target的位置while(r>l){if(nums[l]nums[r]targe…...
安全学习DAY07_其他协议抓包技术
协议抓包技术-全局-APP&小程序&PC应用 抓包工具-Wireshark&科来分析&封包 TCPDump: 是可以将网络中传送的数据包完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用…...
electron的electron-packager打包运行和electron-builder生产安装包过程,学透 Electron 自定义 Dock 图标
electron的electron-packager打包运行和electron-builder生产安装包过程 开发electron客户端程序,打包是绕不开的问题。 macOS 应用构建,看似近在咫尺,实则坑坑致命。 场景:mac笔记本打包,以及生产出可交付的软件安装…...
【无标题】深圳卫视专访行云创新马洪喜:拥抱AI与云原生,深耕云智一体化创新
人工智能(AI)是引领新一轮科技革命和产业变革的重要驱动力。因此,深圳出台相关行动方案,统筹设立规模1,000亿元的人工智能基金群,引导产业集聚培育企业梯队,积极打造国家新一代人工智能创新发展试验区和国家…...
jenkins通过流水线进行构建jar包
前言 最近项目上需要进行CICD,本篇博客主要分享各种骚操作 目录 前言操作如下:构建触发器测试哈哈操作如下: 1.下载Jenkins.war包上传到服务器上面,然后在同级目录下面创建如下脚本: #!/bin/bash# Jenkins安装目录 JENKINS_HOME=/usr/local/jenkins# Jenkins日志文件 LO…...
Android开发:通过Tesseract第三方库实现OCR
一、引言 什么是OCR?OCR(Optical Character Recognition,光学字符识别)是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,通过检测暗、亮的模式确定其形状,然后用字符识别方法将形状翻译成计算机文字的过程。简单地说&#…...
合并两个有序链表——力扣21
题目描述 法一 递归 class Solution { public:ListNode* mergeTwoLists(ListNode *l1, ListNode*l2){if(l1 nullptr){return l2;} else if (l2nullptr){return l1;} else if (l1->val<l2->val){l1->next mergeTwoLists(l1->next, l2);return l1;} else {l2-&g…...
企业数据,大语言模型和矢量数据库
随着ChatGPT的推出,通用人工智能的时代缓缓拉开序幕。我们第一次看到市场在追求人工智能开发者,而不是以往的开发者寻找市场。每一个企业都有大量的数据,私有的用户数据,自己积累的行业数据,产品数据,生产线…...
LabVIEW使用支持向量机对脑磁共振成像进行图像分类
LabVIEW使用支持向量机对脑磁共振成像进行图像分类 医学成像是用于创建人体解剖学图像以进行临床研究、诊断和治疗的技术和过程。它现在是医疗技术发展最快的领域之一。通常用于获得医学图像的方式是X射线,计算机断层扫描(CT),磁…...
kafka面试题
kafka基本概念 Producer 生产者:负责将消息发送到 BrokerConsumer 消费者:从 Broker 接收消息Consumer Group 消费者组:由多个 Consumer 组成。消费者组内每个消费者负责消费不同分区的数据,一个分区只能由一个组内消费者消费&am…...
树的遍历(一题直接理解中序、后序、层序遍历,以及树的存储)
题目如下: 一个二叉树,树中每个节点的权值互不相同。 现在给出它的后序遍历和中序遍历,请你输出它的层序遍历。 输入格式 第一行包含整数 N,表示二叉树的节点数。 第二行包含 N 个整数,表示二叉树的后序遍历。 第…...
JVM系统优化实践(22):GC生产环境案例(五)
您好,这里是「码农镖局」CSDN博客,欢迎您来,欢迎您再来~ 除了Tomcat、Jetty,另一个常见的可能出现OOM的地方就是微服务架构下的一次RPC调用过程中。笔者曾经经历过的一次OOM就是基于Thrift框架封装出来的一个RPC框架导…...
DevOps系列文章 之GitLabCI模板库的流水线
目录结构,jobs目录用于存放作业模板。templates目录用于存放流水线模板。这次使用default-pipeline.yml作为所有作业的基础模板。 作业模板 作业分为Build、test、codeanalysis、artifactory、deploy部分,在每个作业中配置了rules功能开关&…...
spring扩展点ApplicationContextAware解释
ApplicationContextAware是Spring框架中的一个扩展接口,用于获取和操作应用程序上下文(ApplicationContext)。通过实现ApplicationContextAware接口,可以在Bean中获取对应用程序上下文的引用,并进行进一步的操作。 具…...
Leetcode 3577. Count the Number of Computer Unlocking Permutations
Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接:3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯,要想要能够将所有的电脑解锁&#x…...
解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错
出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上,所以报错,到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本,cu、torch、cp 的版本一定要对…...
select、poll、epoll 与 Reactor 模式
在高并发网络编程领域,高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表,以及基于它们实现的 Reactor 模式,为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。 一、I…...
【HarmonyOS 5 开发速记】如何获取用户信息(头像/昵称/手机号)
1.获取 authorizationCode: 2.利用 authorizationCode 获取 accessToken:文档中心 3.获取手机:文档中心 4.获取昵称头像:文档中心 首先创建 request 若要获取手机号,scope必填 phone,permissions 必填 …...
【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习
禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...
CRMEB 中 PHP 短信扩展开发:涵盖一号通、阿里云、腾讯云、创蓝
目前已有一号通短信、阿里云短信、腾讯云短信扩展 扩展入口文件 文件目录 crmeb\services\sms\Sms.php 默认驱动类型为:一号通 namespace crmeb\services\sms;use crmeb\basic\BaseManager; use crmeb\services\AccessTokenServeService; use crmeb\services\sms\…...
Spring AI Chat Memory 实战指南:Local 与 JDBC 存储集成
一个面向 Java 开发者的 Sring-Ai 示例工程项目,该项目是一个 Spring AI 快速入门的样例工程项目,旨在通过一些小的案例展示 Spring AI 框架的核心功能和使用方法。 项目采用模块化设计,每个模块都专注于特定的功能领域,便于学习和…...
Kafka主题运维全指南:从基础配置到故障处理
#作者:张桐瑞 文章目录 主题日常管理1. 修改主题分区。2. 修改主题级别参数。3. 变更副本数。4. 修改主题限速。5.主题分区迁移。6. 常见主题错误处理常见错误1:主题删除失败。常见错误2:__consumer_offsets占用太多的磁盘。 主题日常管理 …...
深度解析:etcd 在 Milvus 向量数据库中的关键作用
目录 🚀 深度解析:etcd 在 Milvus 向量数据库中的关键作用 💡 什么是 etcd? 🧠 Milvus 架构简介 📦 etcd 在 Milvus 中的核心作用 🔧 实际工作流程示意 ⚠️ 如果 etcd 出现问题会怎样&am…...
当下AI智能硬件方案浅谈
背景: 现在大模型出来以后,打破了常规的机械式的对话,人机对话变得更聪明一点。 对话用到的技术主要是实时音视频,简称为RTC。下游硬件厂商一般都不会去自己开发音视频技术,开发自己的大模型。商用方案多见为字节、百…...
