c++ - 从 dock 启动进程与 OS X 上的命令行有什么区别

标签 c++ macos dynamic-linking dylib dyld

我正在调试 OS X 上的一个问题,该问题仅在应用程序从扩展坞启动时出现。从命令行启动应用程序时不会发生这种情况。这两种情况有什么区别?我正在使用的代码是一个基于 c++ 的捆绑插件,正在第三方应用程序中加载。我在这两种情况下都使用 GDB 附加到进程,我能看到的唯一区别是从命令行运行时进程中加载​​了几个额外的 dylib,并且我的库的基址在两种情况。我已尝试将我的链接更改为 -prebind 和/或 -bind_at_load 但无济于事。

最佳答案

一个重要的区别是初始工作目录在每种情况下都不同。应用程序永远不应该对工作目录做出任何假设,如果他们这样做,将会以有趣的方式中断。

关于c++ - 从 dock 启动进程与 OS X 上的命令行有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2553706/

相关文章:

swift - Safari App Extension 与包含应用程序通信的方式

c++ - 如何使用 g++ 在 linux 上使用 boost/shared_ptr.hpp 编译 c++ 程序

c++ - 为什么这个库 dlopen 顺序很重要?

c++ - 怎么了?不允许不完整的类型?

c++ - 使用整数链表创建一个 n 数组

c++ - 在 QML 中使用 C++-slot 返回命名空间中的类型

objective-c - NSCollectionViewItem不显示自定义 View

macos - 更改 OS X 中目录的所有权

python - python中的导入是否被认为是动态链接?

C++检测传递给函数的const int