【发布时间】:2011-01-21 21:37:35
【问题描述】:
我正在使用一些第 3 方。我正在使用它的共享库版本,因为该库很大(~60MB)并且被多个应用程序使用。
有没有办法在应用程序启动时找出库的发布/调试版本分别用于我的应用程序的发布/调试版本?
详细说明
暴露 C++ 接口的库。 API 方法之一返回std::vector<std::string>。
当我在调试模式下编译我的应用程序时的问题,应该使用调试版本的库。发布也一样。如果使用了不正确的库版本,应用程序就会崩溃。
根据gcc(见http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt03ch17s04.html)
但使用混合模式标准库 可以使用调试模式 或发布模式 basic_string 对象, 事情变得更复杂了
附: 1
看起来 Timbo 的提议是一个可能的解决方案 - 使用不同的 soname 来调试和发布库。那么,应该将什么传递给 ./configure 脚本来更改库 soname?
附: 2
我的问题不在链接时,而是在运行时。
附: 3
Here 是展示我面临的问题的问题。
【问题讨论】:
-
Timbo 使用不同库名的解决方案很糟糕。
-
@VJo 你觉得有什么不好?
-
Libstdc++ 手册的格式已经改变,因为我没有足够的声誉来发表评论,所以我在这里添加了一个更新的链接(如果合适的话)。 gcc.gnu.org/onlinedocs/libstdc++/manual/…
标签: c++ linux gcc shared-libraries