哪个库包含 _is_c_termination_complete

2023-12-05

我在将 C++ 代码与标准库 C++ 库链接时收到 LNK2019 错误。我需要知道哪些库包含以下功能:

  • is_c_termination_complete,
  • __acrt_initialize,
  • __acrt_uninitialize,
  • __acrt_uninitialize_critical,
  • __acrt_thread_attach,
  • __acrt_thread_detach

将其包含在链接过程中。

我正在使用 MS Visual Studio Community 2017 和 Intel Parallel studio xe 2019 update 1 用 C++ 编写代码,以便集成到第 3 方软件中。第三方软件提供了一个“make”选项来编译目标文件并将它们链接在一起。

编译工作正常,链接出现问题。

第三方软件提供了一个条目,以变量的形式提供基本的链接器选项。默认选项如下:

link_sl='LINK', '/nologo', '/NOENTRY', '/INCREMENTAL:NO', '/subsystem:console', '/machine:AMD64', 
' /NODEFAULTLIB:LIBC.LIB', '/NODEFAULTLIB:LIBCMT.LIB','/DEFAULTLIB:OLDNAMES.LIB', '/DEFAULTLIB:LIBIFCOREMD.LIB', '/DEFAULTLIB:LIBIFPORTMD.LIB', '/DEFAULTLIB:LIBMMD.LIB', '/DEFAULTLIB:kernel32.lib', '/DEFAULTLIB:user32.lib', '/DEFAULTLIB:advapi32.lib','/FIXED:NO', '/dll','/def:%E', '/out:%U', '%F', '%A', '%L', '%B', 
'oldnames.lib', 'user32.lib', 'ws2_32.lib', 'netapi32.lib','advapi32.lib', 
'msvcrt.lib', 'vcruntime.lib', 'ucrt.lib']

链接时会出现以下 11 个错误:

msvcrt.lib(utility.obj) : error LNK2019: unresolved external symbol __vcrt_initialize referenced in function __scrt_initialize_crt
msvcrt.lib(utility.obj) : error LNK2019: unresolved external symbol __vcrt_uninitialize referenced in function __scrt_initialize_crt
msvcrt.lib(utility.obj) : error LNK2019: unresolved external symbol __vcrt_uninitialize_critical referenced in function __scrt_dllmain_uninitialize_critical
msvcrt.lib(utility.obj) : error LNK2019: unresolved external symbol __vcrt_thread_attach referenced in function __scrt_dllmain_crt_thread_attach
msvcrt.lib(utility.obj) : error LNK2019: unresolved external symbol __vcrt_thread_detach referenced in function __scrt_dllmain_crt_thread_attach
msvcrt.lib(utility.obj) : error LNK2019: unresolved external symbol _is_c_termination_complete referenced in function __scrt_dllmain_uninitialize_c
msvcrt.lib(utility.obj) : error LNK2019: unresolved external symbol __acrt_initialize referenced in function __scrt_initialize_crt
msvcrt.lib(utility.obj) : error LNK2019: unresolved external symbol __acrt_uninitialize referenced in function __scrt_uninitialize_crt
msvcrt.lib(utility.obj) : error LNK2019: unresolved external symbol __acrt_uninitialize_critical referenced in function __scrt_dllmain_uninitialize_critical
msvcrt.lib(utility.obj) : error LNK2019: unresolved external symbol __acrt_thread_attach referenced in function __scrt_dllmain_crt_thread_attach
msvcrt.lib(utility.obj) : error LNK2019: unresolved external symbol __acrt_thread_detach referenced in function __scrt_dllmain_crt_thread_detach

这基本上意味着我没有包含所有必要的库。 我已经发现,在选项中包含库“libvcruntime.lib”可将错误减少到 6 个。因此,使用:

link_sl='LINK', '/nologo', '/NOENTRY', '/INCREMENTAL:NO', '/subsystem:console', '/machine:AMD64', 
' /NODEFAULTLIB:LIBC.LIB', '/NODEFAULTLIB:LIBCMT.LIB','/DEFAULTLIB:OLDNAMES.LIB', '/DEFAULTLIB:LIBIFCOREMD.LIB', '/DEFAULTLIB:LIBIFPORTMD.LIB', '/DEFAULTLIB:LIBMMD.LIB', '/DEFAULTLIB:kernel32.lib', '/DEFAULTLIB:user32.lib', '/DEFAULTLIB:advapi32.lib','/FIXED:NO', '/dll','/def:%E', '/out:%U', '%F', '%A', '%L', '%B', 
'oldnames.lib', 'user32.lib', 'ws2_32.lib', 'netapi32.lib','advapi32.lib', 
'msvcrt.lib', 'vcruntime.lib', 'ucrt.lib',**'libvcruntime.lib'**]

结果是:

msvcrt.lib(utility.obj) : error LNK2019: unresolved external symbol _is_c_termination_complete referenced in function __scrt_dllmain_uninitialize_c
msvcrt.lib(utility.obj) : error LNK2019: unresolved external symbol __acrt_initialize referenced in function __scrt_initialize_crt
msvcrt.lib(utility.obj) : error LNK2019: unresolved external symbol __acrt_uninitialize referenced in function __scrt_uninitialize_crt
msvcrt.lib(utility.obj) : error LNK2019: unresolved external symbol __acrt_uninitialize_critical referenced in function __scrt_dllmain_uninitialize_critical
msvcrt.lib(utility.obj) : error LNK2019: unresolved external symbol __acrt_thread_attach referenced in function __scrt_dllmain_crt_thread_attach
msvcrt.lib(utility.obj) : error LNK2019: unresolved external symbol __acrt_thread_detach referenced in function __scrt_dllmain_crt_thread_detach

我还需要在链接过程中包含哪些其他库来解决这些问题?


首先一件事:由于我使用 /MD 进行编译,所以我使用 CRT 库的 DLL/共享变体,而不是lib...版本.


在 DLL 内部,设置断点时___vcrt_initialize,VS设置了2个底层断点,都在__scrt_stub_for_acrt_initialize()(此处位于 C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.36.32532\crt\src\vcruntime\ucrt_stubs.cpp)。

所以这看起来像vcruntime.lib or ucrt.lib,但它存在于——惊喜,惊喜——msvcrt.lib,从下面的测试中可以看出:

T:>dumpbin /linkermember:1 "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.36.32532\lib\x86\vcruntime.lib"  | find /i "crt_initialize"
     441E ___vcrt_InitializeCriticalSectionEx
     441E __imp____vcrt_InitializeCriticalSectionEx

T:>dumpbin /linkermember:1 "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.36.32532\lib\x86\ucrt.lib"  | find /i "crt_initialize"

T:>dumpbin /linkermember:1 "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.36.32532\lib\x86\msvcrt.lib"  | find /i "crt_initialize"
   555AF0 ___scrt_initialize_mta
   555AF0 ___scrt_initialize_winrt
   5633F6 ___scrt_stub_for_vcrt_initialize
   564772 ___scrt_stub_for_acrt_initialize
   565DFE ___scrt_initialize_crt
   565DFE ___scrt_initialize_onexit_tables
   6DB504 ?__scrt_initialize_type_info@@YAXXZ
   70B59E ___scrt_initialize_default_local_stdio_options

令人惊讶的是,明确提出这一点并没有帮助msvcrt.lib在传递给链接器的库列表的开头和结尾。
甚至更多: 11 个未解决的外部被引用msvcrt.lib她自己!

所以我认为,解决方案是找到之间的映射___vcrt_initialize and __scrt_stub_for_acrt_initialize()被制成。


我发现解决这个问题的唯一方法是不使用自己的 DLL 入口点,而是显式指定__DllMainCRTStartup@12作为入口点。另请参阅我在这篇 SO 帖子中的经历。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

哪个库包含 _is_c_termination_complete 的相关文章

  • std::list::clear 是否会使 std::list::end 迭代器无效?

    检查这个代码 include stdafx h include
  • 从 Invoke 方法获取 RETURN

    我正在尝试从另一个线程上的列表框项目中读取值 我尝试创建一种新方法来运行调用命令 我可以设法将命令发送到列表框 例如通过调用方法添加 但我似乎无法得到响应 我似乎无法获取该项目的值 我尝试了几种方法 一旦我将它从空变为字符串 事情就开始变得
  • libtool 在 Ubuntu 13.04 上构建 thrift 0.9.1 时出错

    在 Ubuntu 13 04 上构建 thrift 0 9 1 支持 C C java C perl python 时出现此错误 configure 不带任何选项运行 make 不带任何选项运行 Making all in test mak
  • MSMQ接收和删除

    是否有任何选项可以在读取消息后将其从 MSMQ 中删除 比如 接收 删除可以作为原子操作运行吗 听起来您想查看下一条消息 然后在处理完成后接收它 Message message Queue Peek Queue ReceiveById me
  • 为什么 C# 中同一类型的隐式和显式运算符不能共存? [复制]

    这个问题在这里已经有答案了 为什么同一类中两个相同类型的运算符 显式和隐式 不能共存 假设我有以下内容 public class Fahrenheit public float Degrees get set public Fahrenhe
  • 从时间列表中查找最接近的时间

    所以 这是场景 我有一个带有创建时间的文件 我想从该文件的创建时间最接近或相等的时间列表中选择一个时间 完成此操作的最佳方法是什么 var closestTime listOfTimes OrderBy t gt Math Abs t fi
  • 如何调试在发布版本中优化的变量

    我用的是VS2010 我的调试版本工作正常 但我的发布版本不断崩溃 因此 在发布版本模式下 我右键单击该项目 选择 调试 然后选择 启动新实例 此时我看到我声明的一个数组 int ma 4 1 2 8 4 永远不会被初始化 关于可能发生的事
  • Nhibernate:连接表并从其他表获取单列

    我有以下表格 create table Users Id uniqueidentifier primary key InfoId uniqueidentifier not null unique Password nvarchar 255
  • PrivateObject 找不到属性

    我的结构基本上如下所示 abstract class A protected string Identificator get set private void DoSomething DoSomethingSpecific protect
  • “没有合适的默认构造函数可用”——为什么会调用默认构造函数?

    我已经查看了与此相关的其他一些问题 但我不明白为什么在我的情况下甚至应该调用默认构造函数 我可以只提供一个默认构造函数 但我想了解它为什么这样做以及它会产生什么影响 error C2512 CubeGeometry no appropria
  • 使用 Unity 在 C# 中发送 http 请求

    如何使用 Unity 在 C 中发送 HTTP GET 和 POST 请求 我想要的是 在post请求中发送json数据 我使用Unity序列化器 所以不需要 新的 我只想在发布数据中传递一个字符串并且能够 将 ContentType 设置
  • 用数组或向量实现多维数组

    我想使用单个数组或向量实现多维数组 可以像通常的多维数组一样访问它 例如 a 1 2 3 我陷入困境的是如何实施 操作员 如果数组的维数为 1 则 a 1 应该返回位于索引 1 处的元素 但是如果维数大于一怎么办 对于嵌套向量 例如 3 维
  • 将日期时间显示为 MM/dd/yyyy HH:mm 格式 C#

    在数据库中 日期时间以 MM dd yyyy HH mm ss 格式存储 但是 我想以 MM dd yyyy HH mm 格式显示日期时间 我通过使用 String Format 进行了尝试 txtCampaignStartDate Tex
  • 初始化列表在 VC10 中不起作用

    我在 VC 2010 中编写了这个程序 class class1 public class1 initializer list
  • 在 C 中使用 #define 没有任何价值

    If a define没有任何价值地使用 例如 define COMMAND SPI 默认值是0吗 不 它的评估结果为零 从字面上看 该符号被替换为空 然而 一旦你有了 define FOO 预处理器条件 ifdef FOO现在将是真的 另
  • Unity,c++ 本机插件字节数组不匹配

    在我的 C 本机插件中 我有一个调用 vector
  • 运行 xunit 测试时无法将输出打印到控制台窗口

    public class test2InAnotherProject private readonly ITestOutputHelper output public test2InAnotherProject ITestOutputHel
  • 如何知道 HTTP 请求标头值是否存在

    我确信这很简单 但是却让我感到厌烦 我在 Web 应用程序中使用了一个组件 它在 Web 请求期间通过添加标头 XYZComponent true 来标识自身 我遇到的问题是 如何在视图中检查此组件 以下内容不起作用 if Request
  • IDisposable 的显式实现

    虽然有很多关于IDisposable在 SO 上找到 我还没有找到答案 我通常遵循这样的做法 当我的一个班级拥有一个IDisposable对象然后它也实现IDisposable并打电话Dispose在拥有的对象上 然而最近我遇到了一个类 它
  • 如何在c中断言两个类型相等?

    在 C 中如何断言两种类型相等 在 C 中 我会使用 std is same 但搜索 StackOverflow 和其他地方似乎只能给出 C 和 C 的结果 在C中没有办法做到这一点吗 请注意 这不是询问变量是否具有某种类型 而是询问两个类

随机推荐

  • css3关键帧动画不同部分的不同计时函数? (准确弹跳)

    这可能吗 我正在尝试重新创建一个掉落到屏幕上的球 并且我有一个如下动画 keyframes bounce 20 40 60 74 84 92 100 transform translate 0 0 0 transform translate
  • Android Activity 内变量的状态

    我在活动中定义了一个全局变量 该变量根据用户按下的按钮而变化 如果我走出应用程序 UI 并通过按住显示最近应用程序列表的主页按钮返回 则我的变量将保持其状态 但如果我通过按应用程序 aicon 再次运行我的应用程序 变量状态就会消失 有没有
  • 如何在Python-OpenCV中使用“cv2.inRange”检测两种不同的颜色?

    如何定义两种不同颜色的 下 和 上 范围 例如红色和蓝色 因为在 HSV 颜色中红色和蓝色并不相邻 这个属于红色 lower red np array 160 20 70 upper red np array 190 255 255 这个属
  • python模块导入中的继承与类实例

    如果这没有意义 我很抱歉 我不是一个经验丰富的程序员 考虑以下代码 import mymodule class MyClass def init self self classInstance myModule classInstance
  • 客户端 JavaScript 中多个 Firebase 连接的资源限制

    假设我想制作一款完全在浏览器中运行的大型实时 2D 开放世界风格游戏 并且我想使用 Firebase 来实现 我们也先把安全问题放在一边 我稍后会问这些 玩家从 0 0 开始 可以向任意方向移动 我对世界进行空间散列 以便任何给定的 x y
  • Bootstrap datetimepicker startDate 不会禁用过去的日期

    我使用 bootstrap datetimepicker 并且我想禁用过去的日子 但是startDate选项不起作用 var now new Date var tomorrow now getFullYear now getMonth 1
  • 如何发送跨域ajax请求[重复]

    这个问题在这里已经有答案了 我想发送跨域 ajax 请求 但我收到以下错误 我也尝试了以下代码 我从一篇堆栈文章中获得了是否可以发送跨域请求 我尝试过发送跨域请求的代码 document ready function ajax type P
  • Flask Admin - 如何根据用户角色设置 form_edit_rules 或 form_create_rules?

    我正在使用 Flask 和 sqlite 以及 SQLAlchemy 为中型组织制作简单的票务系统 对于数据的后端管理 我使用 Flask Admin 用户和票证表如下所示 class User db Model UserMixin id
  • 在 Swift 中使用 String 的 enumerateLines 函数

    The enumerateLinesSwift 的函数String类型声明如下 enumerateLines body line String inout stop Bool gt 据我了解 这个声明的意思是 enumerateLines是
  • 如何使用 JSF 2.0 和 EL 2.2 为 Tomcat 7 配置 Maven pom?

    我想用EL 2 2 for JSF 2应用 和tomcat 7配备 EL 2 2 我对以下内容感到困惑 1 我应该提供servlet api jsp api和EL in my pom文件 使用 Maven 为provided或者根本不将它们
  • Java 到 Jackson JSON 序列化:货币字段

    目前 我正在使用 Jackson 从基于 Spring 的 Web 应用程序发送 JSON 结果 我遇到的问题是尝试让所有货币字段输出两位小数 我无法使用解决这个问题setScale 2 因为像 25 50 这样的数字被截断为 25 5 等
  • jquery 验证和 ajax.beginform

    使用 JQuery Validate 插件时提交 Ajax Beginform 不会停止提交 有没有好的方法来确保 Ajax Beginform 不被提交 我还尝试使用 JQuery Forms 插件来 ajaxify 我的表单 这真是一种
  • 如何更改flutter中的日期和时间格式?

    你好吗 我的后端只接受这种格式的日期和时间 2019 03 24 11 00 00 我在我的应用程序日历小部件中使用来获取日期 并以这种格式打印日期 2019 04 24 12 00 00 000Z 我使用此代码来获取时间 TimeOfDa
  • 如何在 Perl 或批处理中合并两个 Excel (xls) 文件?

    我有两个文件可以说a xls and b xls 第一个包含 2 张 第二个包含 3 张 有人可以告诉我是否可以使用 Perl 或批处理脚本合并它们吗 我想要一份包含 5 张纸的输出XLS file 对于 Perl 解决方案使用电子表格 P
  • CSS:突出显示文本效果

    我试图用一些填充来产生突出显示的文本效果 但填充仅应用于开头和结尾 而不应用于新行 highlight background rgba 255 230 0 0 5 padding 3px 5px margin 3px 5px line he
  • ProGuard 仍然显示完整的活动名称

    我正在使用 Proguard 并在我的应用程序中使用此代码 System out println ACTIVITY NAME IS activity getLocalClassName 它在发布模式下打印出活动名称 我认为它应该混淆所有类名
  • torch.optim 对于多维张量返回“ValueError:无法优化非叶张量”

    我正在尝试优化场景顶点的平移torch optim adam 这是来自redner教程系列 在初始设置下效果很好 它尝试通过将所有顶点移动相同的值来优化场景 称为translation 这是原始代码 vertices for obj in
  • 启用 GtkFileChooserDialog 选择文件或文件夹

    使用 GTK Gtk文件选择对话框 我如何允许用户选择文件或文件夹 两者在这里都有效 这可用的行动是互斥的 不幸的是我认为这是不可能的 我在 Transmission 的 创建 torrent 对话框中尝试了一下 最后使用radibox 启
  • FastAPI 中的依赖注入数据模型

    我对 FastAPI 很陌生 我有一个请求 看起来像这样 router post response model EducationInResp async def create Education account education in
  • 哪个库包含 _is_c_termination_complete

    我在将 C 代码与标准库 C 库链接时收到 LNK2019 错误 我需要知道哪些库包含以下功能 is c termination complete acrt initialize acrt uninitialize acrt uniniti