VS2019 C++移动端项目如何通过.vcxproj配置动态切换.so库版本
VS 2019 C++移动端项目动态配置.so引用方案
前置准备
先将不同配置、不同平台的.so文件按统一规则归类存放,示例目录结构如下:
项目根目录/ ├─ lib/ │ ├─ Debug/ │ │ ├─ ARM/ │ │ │ └─ libtest.so │ │ ├─ ARM64/ │ │ │ └─ libtest.so │ │ └─ x86/ │ │ └─ libtest.so │ └─ Release/ │ ├─ ARM/ │ │ └─ libtest.so │ ├─ ARM64/ │ │ └─ libtest.so │ └─ x86/ │ └─ libtest.so └─ 你的项目.vcxproj
保证文件夹名称和VS IDE中显示的「配置名称」「平台名称」完全匹配。
修改.vcxproj配置
右键项目→卸载项目→右键卸载后的项目→编辑.vcxproj,添加以下配置:
- 配置链接器的动态库搜索路径与依赖项
<ItemDefinitionGroup> <Link> <!-- 用VS内置宏动态匹配当前选中的配置和平台路径 --> <AdditionalLibraryDirectories>$(ProjectDir)lib\$(Configuration)\$(Platform);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> <!-- 填写你需要引入的.so文件名,多个用分号分隔 --> <AdditionalDependencies>libtest.so;%(AdditionalDependencies)</AdditionalDependencies> </Link> </ItemDefinitionGroup>
- 配置.so自动复制到输出目录
<ItemGroup> <!-- 自动匹配当前配置对应的.so文件,编译后复制到输出目录 --> <Content Include="$(ProjectDir)lib\$(Configuration)\$(Platform)\libtest.so"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> <!-- 有多个.so时新增对应Content条目即可 --> </ItemGroup>
修改完成后保存.vcxproj,重新加载项目即可。
验证方法
- 切换VS顶部的配置(Debug/Release)和平台选项,打开项目属性→链接器→常规→附加库目录,确认路径已自动匹配到对应目录
- 编译项目,无链接错误且输出目录中存在对应版本的.so文件即配置生效
常见注意事项
- 不要使用硬编码的固定路径,所有动态匹配都使用VS内置宏保证兼容性
- 若.so存放路径不在项目目录内,可将
$(ProjectDir)替换为对应路径的宏或绝对路径 - 若存在架构不匹配的链接报错,优先检查对应目录下的.so架构是否和当前选中的平台一致
内容的提问来源于stack exchange,提问作者Sixjac
相关产品推荐
相关产品推荐

