Mac 上的 ChaiScript std lib / c++ 在运行时寻找 dll

ChaiScript std lib on Mac / c++ looking for dll at runtime

我正在尝试将 ChaiScript 集成到我的 Mac / c++ 小项目中。虽然我可以通过构建 chaiscript_stdlib.hpp / 使用 ChaiScript chai(Std_Lib.library()) 来很好地使用它,但我真的很想单独构建库。

然而,在构建 dylib 之后,确保安装路径/名称指向正确的位置,并使用它构建我的项目,我总是得到一个运行时错误,它找不到 .dll ...不用说我对为什么它甚至会在 Mac 上寻找 dll 感到非常困惑,但是有人可以分享我做错了什么吗?

干杯!

P.S.: 更清楚地说,错误与定位 .dylib 无关(如果我不在可执行路径中复制 lib,它将首先出现),但 在运行时加载 dylib 后它抱怨找不到 .dll

在不知道您遇到的确切错误的情况下,我猜您误读了错误消息。

ChaiScript 在查找其运行时库时不区分文件扩展名。它也不会尝试加载多个标准库。这是为了处理 mingw/cygwin 构建可能会生成 .so 或 .dll 文件或其他任何文件的事实,具体取决于开发人员的心血来潮。因此,在所有平台上,ChaiScript 都会尝试查找具有可能扩展集的库 (.so, .dll, ``)

如果您将标准库构建为 dylib,您可能构建错误。 dylib 是一个共享库,而 .so.bundle 是一个可加载模块,在这里引用:

http://fink.thetis.ig42.org/doc/porting/shared.php

CMake 使用 .so 扩展在 MacOS 上编译可加载模块,这是 ChaiScript 在搜索库时使用的扩展。

请确保您将标准库编译为适用于您的平台的共享模块。我相信 -bundle 需要传递给链接器。