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

时间:2015-01-02 15:50:58

标签: c++ macos dll chaiscript

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

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

干杯!

PS:只是要清楚一点,错误不在于找到.dylib(如果我不在可执行文件路径中复制lib,那么它会先出现),但之后在运行时加载dylib它抱怨它无法找到.dll

1 个答案:

答案 0 :(得分:1)

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

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需要传递给链接器。