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

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

干杯!

PS:需特别清楚,错误不是关于定位.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需要传递给链接器。

关于c++ - Mac/C++上的ChaiScript std lib在运行时寻找dll,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27744743/

10-11 22:21