Я пытаюсь интегрировать ChaiScript в мой маленький проект Mac / c ++. В то время как я могу использовать его просто прекрасно, создавая chaiscript_stdlib.hpp / используя ChaiScript chai (Std_Lib.library ()), я действительно хотел бы построить библиотеку отдельно.
Однако после сборки dylib, убедившись, что путь / имя установки указывает на правильное место, и собрав свой проект с ним, я всегда получаю ошибку во время выполнения, что он не может найти .dll … Излишне говорить, что я глубоко сбит с толку Что касается того, почему он будет искать DLL на Mac, но кто-нибудь мог бы рассказать, что я делаю неправильно?
Ура!
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 компилирует загружаемые модули в MacOS, используя .so
расширение, которое использует ChaiScript при поиске библиотеки.
Пожалуйста, убедитесь, что вы компилируете стандартную библиотеку как общий модуль в соответствии с вашей платформой. я верю -bundle
нужно передать компоновщику.