Как связать библиотеку ".so" в Microsoft Visual Studio
Мне было интересно, знает ли кто-нибудь, как связать динамическую библиотеку.so (или статическую библиотеку для этого материала) в Microsoft Visual Studio. Следующие шаги не работают ни для.a, ни для.so.
Я играю с подключением vs-android для разработки в Android NDK с использованием MVS и пытаюсь добавить в проект пользовательскую библиотеку, скомпилированную как.so.
1 - Я создал проект динамической библиотеки (.so) вместе с одним из примеров проектов (проект san-angeles) в том же решении.
2 - Я установил проект.so, давайте назовем его "движок" как зависимость от san-angeles. Файл engine.so создается без каких-либо проблем и отображается в папке {SolutionFolder?}/Android/Debug.
3 - Я добавил engine.so в компоновщик и добавил в него дополнительные компоненты san-angeles и папку {SolutionFolder?}/Android/Debug (в виде полного пути, например, C:/projects/.../Debug) к дополнительные каталоги компоновщика.
Но когда я собираю san-angeles, я получаю ошибку:
"arm-linux-androideabi-g ++. exe: engine.so: такого файла или каталога нет"
Я предполагаю, что мне нужно сделать что-то еще, чтобы добавить.so /.a в проект? Может быть, изменить имя на libengine.so или что-то в этом роде? Многие из включенных по умолчанию включений имеют префикс lib, поэтому я не знаю, так ли это.
Спасибо за помощь, Хайме
2 ответа
Итак, в моем случае это было решено с помощью:
1 - Наименование сгенерированного engine.a как libengine.a
2 - Вместо MVS, добавив engine.a в Preferences/Linker/ Дополнительные зависимости, я добавил в Preferences/Linker/Command Line -l"engine"
С этим, наконец, удалось найти проект и engine.a
Надеюсь, это поможет кому-то еще.:)
Для тех, кто наткнулся на эту проблему:
- Добавьте каталог, в котором находится
Linker -> General -> Additional Library Directories
. Проект, который вы компилируете, также должен бытьDynamic Library .so
чтобы линкер был доступен. Это добавляет-L
флаг в командной строке - в
Linker -> Command Line
добавить свой.so
кAdditional Options
с-l
флаг с кавычками, например-l"MyDynamicLibraryWithoutLibPrefixAndExtension"
. В моем случае я хотел связатьlibassimp.so
->-l"assimp"