问题标签 [dyld]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
10240 浏览

c++ - 未找到符号,预计在平面命名空间 ObjC++ 中

我可能有一个简单的问题,但是在编译过程中没有信息性错误或警告来提醒我出了什么问题。

我有一个包含 C++ 主文件和 ObjC 头文件的 Objective-C++ 应用程序。

它构建得很好,但是在运行时,它会给出以下错误消息:

再多的谷歌搜索都没有找到解决方案,我敢肯定我只是错过了某个地方的编译或构建选项。

“AppController.h”包含在目标中(选中),并包含在#importObjC 类文件中。

任何帮助是极大的赞赏。

ObjC++ 经常让我头疼。

谢谢,

-S!

0 投票
2 回答
11837 浏览

c++ - Makefile 找不到 macports 安装的 boost 库

我刚刚从 macports 使用sudo port install boost.

一切正常。现在我有一个项目,我正在尝试使用 makefile 构建。一切都很好,直到涉及到需要 boost 库的文件。

它说:
src/graph.h:20:42: error: boost/graph/adjacency_list.hpp: No such file or directory

该文件实际上位于两个地方:
/opt/local/include/boost/graph/adjacency_list.hpp

/opt/local/var/macports/software/boost/1.42.0_0/opt/local/include/boost/graph /adjacency_list.hpp

在寻找 boost/graph/adjacency_list.hpp 的文件 src/graph.h 中,包含语句在这里:
#include<boost/graph/adjacency_list.hpp>

我该如何进行这项工作?

0 投票
1 回答
7720 浏览

dyld - dyld:找不到符号:_MPMoviePlayerPlaybackStateDidChangeNotification

我正在构建使用 MPMoviePlayerViewController 播放视频的通用应用程序。观察通知“MPMoviePlayerPlaybackStateDidChangeNotification”。该应用程序在 iPad 模拟器中成功运行,但在 iPhone 中运行时抛出以下错误:-

dyld:找不到符号:_MPMoviePlayerPlaybackStateDidChangeNotification 引用自:/Users/veer/Library/Application Support/iPhone Simulator/3.0/Applications/27BC67AA-72D1-4DD2-9146-0126FCC8E90C/test.app/eReader 预期在:/Developer/Platforms/ iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.0.sdk/System/Library/Frameworks/MediaPlayer.framework/MediaPlayer in /Users/veer/Library/Application Support/iPhone Simulator/3.0/Applications/27BC67AA-72D1-4DD2-9146 -0126FCC8E90C/test.app/eReader

有没有人遇到同样的问题并解决了?

提前致谢!

0 投票
1 回答
12084 浏览

objective-c - Dyld:库未加载错误 Mac OS

万岁,

所以我知道我将得到十几个“加载 lib 虚拟”的答案,但是这里有......

junk.framework 正在导出另一个项目(junk.app)的一些对象,因此我可以在集群上的 remote.app 节点上使用它。我可以编译 junk.framework(我意识到动态加载不再意味着什么)并编译并将 remote.app 链接到 junk.framework。

但是,当我运行 remote.app 时,我得到了这个可爱的错误宝石:

我认为发生的事情是 junk.framework 正在从某个位置加载 libtiff.dylib 并且找不到它。junk.framework 是我正在做的另一个项目,我刚刚开始构建(最后)。

当我get info在垃圾目标中使用 libtiff.dylib 时,它给了我/Users/slate/Documents/osirix/osirix/Binaries/LibTiff/libtiff.dylib一条路径……我已经被absolute path选中了。那么为什么它不在那里寻找呢?

呃......为什么它在看@executable_path/../???? 这个设置到底在哪里,所以我可以改变它?

编辑 - -

otool -L 给了我这个:

0 投票
3 回答
1766 浏览

c++ - 链接 C++ 动态库时延迟符号绑定失败

我正在用 C++ 编写一个 dylib,但是当我尝试将它链接到我的应用程序时,它在执行时给了我一个错误:

我确保符号没有被剥离,并且

报告该符号存在于库中:

我是从 XCode 内部链接的,所以链接命令有点奇怪。这是 dylib 的链接器命令:

这是测试应用程序的链接器命令:

关于为什么会发生这种情况和/或如何解决它的任何想法?

0 投票
4 回答
1360 浏览

gcc - 强制 gcc 使用一个链接器而不是另一个链接器

最近我一直在开发 OS X。有一段时间事情进展得很顺利,直到不知何故ld进入我的系统,现在gcc无法使用dyld. 此外,我所有的共享库都是*.dylib格式的,而 ld 顽固地忽略了那里的存在。如果我mv从 ld PATH,gcc 只是抱怨它找不到 ld。

请帮助我让 gcc 回到正轨并使用它应该使用的东西。

0 投票
3 回答
3209 浏览

macos - dyld:警告,未知环境变量:DYLD_LIBRARY_PATH_64 位

我使用 Mac OS X Developer Tools 的捆绑属性列表编辑器将环境变量 DYLD_LIBRARY_PATH_64 位设置为文件 ~/.MacOSX/environment.plist 中的值 path/to/dylib。我保存了这个文件并注销了。

重新登录后,控制台显示多条消息“dyld:警告,未知环境变量:DYLD_LIBRARY_PATH_64-bit”。我使用属性列表编辑器从 environment.plist 中删除了条目,保存了文件并注销。

我重新登录,警告消息仍然存在。dyld 手册页显示了一个常量列表,这些常量看起来类似于我任性的环境变量,因为它们都以“DYLD_”开头。源文件 dyld.cpp 在一长行 DYLD 常量之后显示了一个 else,并带有打印相同警告消息的代码。也许我飞得太近了环境变量命名的太阳。我以为我们是自由的!

我试过 update_dyld_shared_cache 无济于事。也许我错过了一些重要的标志?

我在 /etc/launchd.conf 中添加了“setenv DYLD_LIBRARY_PATH_64-bit path/to/dylib”,试图在我的路径中添加一个(显然格式错误的)环境变量,希望如果它出现,我可以删除它——但没有成功.

从命令行,导出不显示 DYLD_LIBRARY_PATH_64 位。这是一些示例输出:

这个故事的寓意是永远不要使用属性列表编辑器,至少对于动态库路径。好吧,不——这个故事的寓意是永远不要在环境变量名称的末尾使用破折号,因为它们看起来像 flags

话虽如此,对于摆脱这个伪装的环境变量,以及清理我的控制台中重复的 dyld 警告,你有什么建议吗?

谢谢!

0 投票
1 回答
3885 浏览

c++ - 找不到 Dyld 符号错误

这是我的错误。

eqOsirix我的主要命名空间在哪里。前段时间我有两个类似的问题(一个两个),但现在这两种解决方案都没有帮助我。

我在更新我的 mac 后注意到了这个问题,但我认为这无关紧要。

不会产生编译错误(或警告)。

什么可能导致这种情况?为什么编译器在链接期间没有捕获任何东西?我已经完成了干净的构建,重置了 XCode 和 Mac namespace.... 啊!


[编辑] 由于@Troubador 指出这ROI不是争夺的一部分,我将投资回报率包括在下面:

没什么可搞砸的,我我已经为 C++ 定义了所有虚拟对象(而不是 Java 或 ObjC)???

0 投票
2 回答
3137 浏览

c++ - 使用 DYLD 插入来插入类函数

我已经成功地使用 dyld -macosx- 将标准 C 函数插入到第三方应用程序中,获得了有关它所做的变通方法的重要信息。但我真正需要的是替换某个类的某个功能。

我要覆盖的函数是 QString::append(..., ..., ...),所以每次将一个字符串附加到另一个字符串时——整个应用程序都使用 qstring——,我发现。

有办法吗?这是我已经拥有的代码。

非常感谢你

0 投票
1 回答
40097 浏览

macos - 如何在 Mac OSX 下使用 gcc 设置可执行文件的运行时路径(-rpath)?

我想在 Mac OSX 下在编译时设置可执行文件(用于链接器)的运行时路径,以便动态链接器在程序启动时找到非标准位置的共享库。

在 Linux 下,使用-Xlinker -rpath -Xlinker /path/to(或使用-Wl,-rpath,/path/to)可以做到这一点,在 Solaris 下,您可以添加-R/path/to到编译器命令行。

我发现一些信息表明 Mac OS X gcc 从 10.5 开始支持 -rpath,即从 ~ 2008 年开始。

我试图用一个最小的例子让它工作 - 没有成功:

和:

像这样编译它:

现在测试:

因此问题是:如何在 Mac OSX 下设置链接器的运行时路径?

顺便说一句,设置DYLD_LIBRARY_PATH有效 - 但我不想使用这个 hack。

编辑:关于otool -L

似乎otool -L只打印可执行文件链接的库名称(以及链接时可能的位置),并且没有运行时路径信息。