【问题标题】:How to link a ".so" library in Microsoft Visual Studio如何在 Microsoft Visual Studio 中链接“.so”库
【发布时间】:2012-11-03 06:23:43
【问题描述】:

我想知道是否有人知道如何在 Microsoft Visual Studio 中链接 .so 动态库(或该母校的 .a 静态库)。以下步骤不适用于 .a 或 .so。

我正在使用 vs-android 插件来使用 MVS 在 Android NDK 中进行开发,并且我正在尝试向项目中添加一个编译为 .so 的自定义库。

1 - 我在同一个解决方案中与示例项目之一(san-angeles 项目)一起创建了一个动态库 (.so) 项目。

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 前缀,所以我不知道它是否符合这些要求。

感谢您的帮助, 詹姆

【问题讨论】:

    标签: linker .a vs-android


    【解决方案1】:

    好的,所以在我的情况下,这是通过以下方式解决的:

    1 - 将生成的 engine.a 命名为 libengine.a

    2 - 我没有从 MVS 将 engine.a 添加到 Preferences/Linker/Additional Dependencies,而是添加到 Preferences/Linker/Command Line -l"engine"

    有了这个,项目终于找到了engine.a

    希望这对其他人有所帮助。 :)

    【讨论】:

    • 您的问题涉及使用 .so,但您的答案使用了 .a - 您是否设法在 .so 中进行链接?
    • 不,抱歉,一旦它与 .a 一起使用,我就懒得推它了。
    • 我遇到了同样的问题,不幸的是,您建议的修复方法没有帮助,仍然出现错误:严重代码描述项目文件行抑制状态错误 MSB6006 "clang.exe" exited with code 1. Android2. NativeActivity C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Application Type\Android\3.0\Android.Common.targets 119 但是当我添加 .so /.a lib 直接在解决方案资源管理器中。尽管这似乎可行,但对于多架构构建来说仍然不太理想。谢谢
    猜你喜欢
    • 1970-01-01
    • 2018-07-14
    • 1970-01-01
    • 2016-11-19
    • 1970-01-01
    • 1970-01-01
    • 2021-07-31
    • 2014-03-01
    • 2011-12-30
    相关资源
    最近更新 更多