vsimon / webrtcbuilds

Getting started with WebRTC natively is no easy picnic. The goal of webrtcbuilds is to provide a single standalone WebRTC static library and package.
BSD 3-Clause "New" or "Revised" License
202 stars 164 forks source link

It seems that simd_asm.lib is not packaged into webrtc_full.lib #64

Closed JerryJian closed 6 years ago

JerryJian commented 7 years ago

Hi,

I create a Visual Studio project, and link against webrtc_full.lib, error like this: webrtc_full.lib(jsimd_x86_64.obj) : error LNK2019: 无法解析的外部符号 jsimd_rgb_ycc_convert_sse2,该符号在函数 jsimd_rgb_ycc_convert 中被引用

When I add link library simd_asm.lib, build successfully.

It seems that simd_asm.lib is not in webrtc_full.lib and need link separately.

JerryJian commented 7 years ago

Both _asm.lib should link separately.

vsimon commented 7 years ago

Hi, Part of the compile-win() function does try to do just that, add the simd_asm lib separately. Windows is not my daily environment at the moment, I'm wondering if those files aren't being picked up by the find. When running the build with the -d option (for debug output) to be able to see all intermediate output, what does the extras var contain? In the meantime I'll try to get a windows environment to investigate.

local extras=$(find \
    ./obj/third_party/libvpx/libvpx_* \
    ./obj/third_party/libjpeg_turbo/simd_asm \
    ./obj/third_party/boringssl/boringssl_asm -name *.obj)
  echo "$extras" | tr ' ' '\n' >>libwebrtc_full.list
JerryJian commented 7 years ago

Hi, thanks for your reply.

My environment: Windows 7 SP1 64 VS2015 Update 3 Command: ./build.sh -b branch-heads/60

I find that there is no *.obj files in ./obj/third_party/boringssl/boringssl_asm and ./obj/third_party/libjpeg_turbo/simd_asm folder, the files are all *.o* and .o.d** files.

Is anything wrong with my command line?

titeipa commented 6 years ago

Hi,

I encountered the same issue on Win and wanted to share the solution. Like JerryJian noted when the asm files are compiled to object files that have .o extension not .obj.

If you change the line vsimon noted they are correctly linked.

  local extras=$(find \
    ./obj/third_party/libvpx/libvpx_* \
    ./obj/third_party/libjpeg_turbo/simd_asm \
    ./obj/third_party/boringssl/boringssl_asm -name *.o -o -name *.obj)
vsimon commented 6 years ago

thanks for the investigation and fix @titeipa, I'll make a PR with your fix shortly: https://github.com/vsimon/webrtcbuilds/pull/67

JerryJian commented 6 years ago

@titeipa Thanks for sharing the solution.