STL 和发布/调试库混乱

2024-03-05

我正在使用一些第三方。我正在使用它的共享库版本,因为该库很大(~60MB)并且被多个应用程序使用。

有没有办法在应用程序启动时找出库的发布/调试版本分别用于我的应用程序的发布/调试版本?

更长的描述

公开 C++ 接口的库。 API 方法之一返回std::vector<std::string>.

当我在调试模式下编译应用程序时出现问题,应该使用库的调试版本。发布时也一样。如果使用了错误版本的库,应用程序就会崩溃。

根据海湾合作委员会(参见http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt03ch17s04.html http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt03ch17s04.html)

但具有混合模式标准库 可以使用调试模式 或释放模式 basic_string 对象, 事情变得更加复杂

P.S. 1

看起来 Timbo 的提议是一个可能的解决方案 - 对调试和发布库使用不同的 soname。那么,应该将什么传递给 ./configure 脚本来更改库 soname?

P.S. 2

我的问题不是在链接时,而是在运行时。

P.S. 3

Here https://stackoverflow.com/questions/4836344/stdvectorstdstring-crash这个问题展示了我面临的问题。


引用的调试模式here http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt03ch17s04.html has nothing与应用程序的调试或发布版本有关。 STL 调试模式通过以下命令激活-D_GLIBCXX_DEBUG并且是一种特殊的检查模式。

第三方库实际上不太可能是使用 STL 检查模式编译的,但如果是的话,它很可能会立即提到您的代码也应该使用-D_GLIBCXX_DEBUG.

如果第 3 方库不是通过检查 STL 构建的,那么无论您是进行优化构建还是调试构建,它都与您的代码兼容。

由于您声明与第 3 方库的优化构建链接的代码的调试版本会导致崩溃,因此该崩溃很可能是由代码中的错误(或者可能是第 3 方库中的错误)引起的。

Valgrind 和 GDB 是你的朋友。

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

STL 和发布/调试库混乱 的相关文章

  • Subversion 和 Visual Studio 项目的最佳实践

    我最近开始在 Visual Studio 中处理各种 C 项目 作为大型系统计划的一部分 该系统将用于替换我们当前的系统 该系统是由用 C 和 Perl 编写的各种程序和脚本拼凑而成的 我现在正在进行的项目已经达到了颠覆的临界点 我想知道什
  • 将字节数组转换为托管结构

    更新 这个问题的答案帮助我编写了开源项目GitHub 上的 AlicanC 现代战争 2 工具 https github com AlicanC AlicanC s Modern Warfare 2 Tool 你可以看到我是如何阅读这些数据
  • ASP.NET Core 与现有的 IoC 容器和环境?

    我想运行ASP NET 核心网络堆栈以及MVC在已托管现有应用程序的 Windows 服务环境中 以便为其提供前端 该应用程序使用 Autofac 来处理 DI 问题 这很好 因为它已经有一个扩展Microsoft Extensions D
  • 无需 cron 在后台发送邮件

    我想知道是否有一种方法可以运行 PHP 循环 以便在后台向订阅者发送几百封电子邮件 我的目标是格式化新闻通讯 单击发送 然后关闭浏览器或更改页面 当然 发送电子邮件的实际过程将在后台运行 不会因浏览器关闭而中断 我知道这可以通过 cron
  • C++中delete和delete[]的区别[重复]

    这个问题在这里已经有答案了 可能的重复 C 中的删除与删除 运算符 https stackoverflow com questions 2425728 delete vs delete operators in c 我写了一个包含两个指针的
  • 如何创建用于 QML 的通用对象模型?

    我想知道是否有任何宏或方法如何将 Qt 模型注册为 QObject 的属性 例如 我有AnimalModel http doc qt io qt 5 qtquick modelviewsdata cppmodels html qabstra
  • 如何使用MySqlCommand和prepare语句进行多行插入?(#C)

    Mysql 给出了如何使用准备语句和 NET 插入行的示例 http dev mysql com doc refman 5 5 en connector net programming prepared html http dev mysq
  • 如何生成 appsettings..json 文件?

    我有一个 ASP NET Core 2 WebAPI 它将部署在以下环境中 INT QA STAGE 生产环境 基于上述 我需要有appsettings
  • 如何将带有自定义分配器的 std::vector 传递给需要带有 std::allocator 的函数?

    我正在使用外部库 pcl 因此我需要一个不会更改现有函数原型的解决方案 我正在使用的一个函数生成一个std vector
  • 如何在特定 systemd 服务重新启动时触发自定义脚本运行

    我想知道如何安排自定义脚本在重新启动服务时运行 我的用例是 每当重新启动 Tomcat 服务时 我都必须运行多个命令 我想知道是否有一种方法可以编写脚本并安排它在重新启动 Tomcat 服务时运行 我已将 tomcat 脚本设置为 syst
  • 劫持系统调用

    我正在编写一个内核模块 我需要劫持 包装一些系统调用 我正在暴力破解 sys call table 地址 并使用 cr0 来禁用 启用页面保护 到目前为止一切顺利 一旦完成 我将公开整个代码 因此如果有人愿意 我可以更新这个问题 无论如何
  • 无法解析远程名称 - webclient

    我面临这个错误 The remote name could not be resolved russgates85 001 site1 smarterasp net 当我请求使用 Web 客户端读取 html 内容时 出现错误 下面是我的代
  • TcpClient 在异步读取期间断开连接

    我有几个关于完成 tcp 连接的问题 客户端使用 Tcp 连接到我的服务器 在接受客户端后listener BeginAcceptTcpClient ConnectionEstabilishedCallback null 我开始阅读netw
  • 如何在 C++ 中将 CString 转换为 double?

    我如何转换CString to a double在 C 中 Unicode 支持也很好 Thanks A CString可以转换为LPCTSTR 这基本上是一个const char const wchar t 在 Unicode 版本中 知
  • 为什么 clang 使用 -O0 生成低效的 asm(对于这个简单的浮点和)?

    我正在 llvm clang Apple LLVM 版本 8 0 0 clang 800 0 42 1 上反汇编此代码 int main float a 0 151234 float b 0 2 float c a b printf f c
  • asp.net网格分页的SQL查询

    我在用iBatis and SQLServer 使用偏移量和限制进行分页查询的最佳方法是什么 也许我添加该列ROW NUMBER OVER ORDER BY Id AS RowNum 但这只会阻止简单查询的数据访问 在某些情况下 我使用选择
  • C 中带有指针的结构的内存开销[重复]

    这个问题在这里已经有答案了 我意识到当我的结构包含指针时 它们会产生内存开销 这里有一个例子 typedef struct int num1 int num2 myStruct1 typedef struct int p int num2
  • 在 C++17 中使用 成员的链接错误

    我在 Ubuntu 16 04 上使用 gcc 7 2 并且需要使用 C 17 中的新文件系统库 尽管确实有一个名为experimental filesystem的库 但我无法使用它的任何成员 例如 当我尝试编译此文件时 include
  • C语言声明数组没有初始大小

    编写一个程序来操纵温度详细信息 如下所示 输入要计算的天数 主功能 输入摄氏度温度 输入功能 将温度从摄氏度转换为华氏度 独立功能 查找华氏度的平均温度 我怎样才能在没有数组初始大小的情况下制作这个程序 include
  • 如何查找连接到 AF_INET 套接字的客户端的 UID?

    有什么方法或类似的东西ucred for AF UNIX如果是AF INET插座 TCP在我的例子中 找出连接到我的套接字的客户端的UID 还有 proc net tcp但它显示了UID of the creator插座的而不是连接的cli

随机推荐

  • 在Atom中使用anaconda环境

    我已经安装了 Anaconda Python 3 6 和 tensorflow python 3 5 我已经设法让它在 Spyder 和 sublime text 3 上运行 通过创建新的构建系统 现在所有的都是使用Atom 我不习惯 所以
  • 在heroku中记录多行消息

    我正在使用 NodeJS 开发一个应用程序并部署在 Heroku 中 我需要记录多行消息 例如堆栈跟踪和其他多行信息 但希望将它们保留为一条日志消息 问题是当使用console log 或任何使用的框架console log stdout
  • 如何从 AsyncTasks doInBackground() 检索数据?

    我会尽可能让这个简单 我的控制层中有一个使用类的方法CallServiceTask延伸AsyncTask 当调用新的CallServiceTask execute parameters 如何检索从返回的数据doInBackground 我发
  • Pig Latin:从某个日期范围加载多个文件(目录结构的一部分)

    我有以下场景 小猪版本使用0 70 HDFS 目录结构示例 user training test 20100810
  • 如何将自定义视图动态添加到 Visual Studio for Mac C# 中的视图

    我正在完成一个项目 其中我将拥有同一组表单组件的多个正方形大小的实例 我可以在表单 UI 中手动创建 8 个实例 或者我宁愿做的是创建一个视图 或项目渲染器 然后将该视图的实例动态添加到我的主视图中 如何将创建的自定义视图动态添加到 Xam
  • 使 AdMob 在 Android 2.3 设备上运行?

    好吧 我读了很多文章 问题和答案 但仍然找不到适合我的 我正在尝试在 Android 应用程序中显示 AdMob 横幅 我正在使用 Eclipse 和最新的 AdMob SDK 4 3 1 它需要 Android 3 2 13 才能工作 问
  • 如何禁用/启用带有复选框的按钮(如果选中)[重复]

    这个问题在这里已经有答案了 请我需要一个可以与下面的 HTML 代码一起使用的脚本 以便在选中或取消选中复选框时禁用 启用按钮
  • Android - “setToolbarColor(int)”和“setSecondaryToolbarColor(int)”已弃用

    我使用此代码打开 Chrome 自定义选项卡的链接 但它正在显示 Deprecated for setToolbarColor and setSecondaryToolbarColor 我还没有找到任何可以替代的东西 注意 Android
  • 根路径不适用于 php include

    在链接开头获取根文件夹在 php include 中不起作用 例如 example example php 解决办法是什么 我假设根文件夹是指您的网络文档根目录 而不是文件系统根目录 为此 您可以 将 Web 根文件夹添加到包含路径 htt
  • 无法启动捆绑包 - 缺少要求(osgi.wiring.package)

    我是 Apache karaf 和 OSGI 的新手 我正在尝试编写并运行一个非常简单的包 但我在启动该捆绑包时收到此错误 执行命令时出错 在捆绑包上执行命令时出错 无法 解决 karaf 86 R 86 0 缺少要求 karaf 86 R
  • Rails ActiveRecord:验证单个属性

    有什么方法可以验证 ActiveRecord 中的单个属性吗 就像是 ac object valid attribute name 有时有些验证非常昂贵 例如需要执行数据库查询的验证 在这种情况下 您需要避免使用valid 因为它所做的事情
  • 更改我的 iPhone 应用程序的最低操作系统要求?

    我做了一个简单的申请 然后提交审核 之后 应用程序详细信息声称最低操作系统要求是 3 1 2 我使用该 SDK 如果我将目标的 iPhone OS 部署目标更改为较低的 iPhone OS 那么它可以 解决 我的问题吗 有没有风险 我使用一
  • 链接静态库时未捕获异常

    我开始在程序中实现 try catch 但是当我测试它时 异常从未被捕获 程序只是崩溃了 即使是最简单的 try catch 用例也会失败 即 try throw 123 catch cerr lt lt This line doesn t
  • 如果 dotCover 没有报告足够高的结果,我如何才能使 TeamCity 构建失败?

    我希望 TeamCity 运行我的 mSpec 测试并报告测试所涵盖的代码 我还希望 TeamCity 报告构建失败如果某些命名空间中的代码覆盖率未达到阈值 e g MyProduct ImportantStuff必须是100 but My
  • 打印通用字符

    谁能解释为什么通用字符文字 例如 u00b1 被编码为 UTF 8 字符字符串 为什么下面会打印加号 减号 include
  • 可变长度模板参数列表?

    我记得看到过这样的事情 template
  • 具有旧式类的 Python 描述符

    我试着用谷歌搜索一些关于它的东西 为什么非数据描述符适用于旧式类 文件说他们不应该 请注意 描述符仅针对新样式对象或类 子类化的对象或类 调用object or type http docs python org 2 reference d
  • 如何使用Camera2获取前置摄像头的id?

    如何使用新的 Camera2 库获取前置摄像头的 ID 我在文档中找不到它 我找到了解决方案 我可以通过调用获取相机特征getCameraCharacteristics cameraId on CameraManager object St
  • Twitter Bootstrap 中的全宽拆分下拉按钮

    我的网站上有一个地方正在使用一堆button元素样式为btn block example http jsfiddle net TQSk6 1 来自 Twitter Bootstrap 文档 我现在想将其中一些切换为拆分按钮 example
  • STL 和发布/调试库混乱

    我正在使用一些第三方 我正在使用它的共享库版本 因为该库很大 60MB 并且被多个应用程序使用 有没有办法在应用程序启动时找出库的发布 调试版本分别用于我的应用程序的发布 调试版本 更长的描述 公开 C 接口的库 API 方法之一返回std