SimpleOSS 与 UE5 引擎 libcurl 冲突问题
SimpleOSS 提供了丰富的 OSS 对象服务器访问 API,被很多公司直接采用。随着 UE 版本升级,UE 将很多第三方库整合到自己的体系下面,其中包括 libcurl 这个库。
SimpleOSS 最早的版本只能支持 UE4.25 打包,但是 UE4.26 以上就无法打包,会报打包错误 libcurl 库错误。此时独立程序倒是可以打包,但是到了 UE5 正式版本,独立程序也无法打包,甚至连编译都困难,也会报 libcurl 冲突的错误。
解决方案:替换库文件
这里我们采用的解决方法就是换库,并不是换阿里云 API 的最新的库,而是把里面冲突的 libcurl 库换成 UE5 的第三方库,这个问题就可以解决掉。
1. 替换静态库文件
找到 UE5 的第三方 libcurl 库位置,将其拷贝到 SimpleOSS 对应的第三方库目录。把原来的 libcurl.lib 删除,改为 UE5 的 libcurl_a.lib。
2. 替换头文件
把头文件替换为 UE5 的 curl。找到 UE5 的第三方库 curl.h 的位置,直接拷贝到阿里云的第三方库位置覆盖原文件。
3. 更新构建配置
此时独立程序编译是没有问题,但是 UE5 引擎编译依然会报错。需要到第三方库的 Build.cs 下重新链接。
4. 开启符号导出
我们需要打开 oss_c_sdk 并修改相关配置。这一步非常关键,因为涉及第三方导出。需开启 _declspec(dllexport) 以便真正导出符号,确保与 UE5 完美兼容。


