macos — ChaiScript std lib на Mac / c ++ ищет dll во время выполнения

Я пытаюсь интегрировать ChaiScript в мой маленький проект Mac / c ++. В то время как я могу использовать его просто прекрасно, создавая chaiscript_stdlib.hpp / используя ChaiScript chai (Std_Lib.library ()), я действительно хотел бы построить библиотеку отдельно.

Однако после сборки dylib, убедившись, что путь / имя установки указывает на правильное место, и собрав свой проект с ним, я всегда получаю ошибку во время выполнения, что он не может найти .dll … Излишне говорить, что я глубоко сбит с толку Что касается того, почему он будет искать DLL на Mac, но кто-нибудь мог бы рассказать, что я делаю неправильно?

Ура!

P.S .: просто чтобы прояснить ситуацию, ошибка не в том, что нужно найти .dylib (что произойдет раньше, если я не скопирую lib в пути к исполняемому файлу), а в том, что после загружая dylib во время выполнения, он жалуется, что не может найти .dll

0

Решение

Не зная точную ошибку, которую вы получаете, я предполагаю, что вы неправильно читаете сообщение об ошибке.

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 нужно передать компоновщику.

1

Другие решения


По вопросам рекламы [email protected]