sccn / lsl_archived

Multi-modal time-synched data transmission over local network

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

LSL DLL on ARM64 Architecture

jeffmorr opened this issue · comments

Hello,

I am having issues building LSL, in Visual Studio 2017, on ARM64 Architecture. I followed all of the steps necessary for Visual Studio 2017 to compile ARM64 Architecture dynamic libraries. I switched the Platform in the Configuration Manager, built lslboost on ARM64 but the lsl component still fails to build. This is the error I get:

1>------ Build started: Project: lsl, Configuration: Release ARM64 ------
1> Creating library C:/Users/Jeff/Downloads/labstreaminglayer-master/LSL/liblsl/ARM64/Release/liblsl64.lib and object C:/Users/Jeff/Downloads/labstreaminglayer-master/LSL/liblsl/ARM64/Release/liblsl64.exp
1>lslboost.lib(tss_pe.obj) : error LNK2001: unresolved external symbol _pRawDllMainOrig
1>C:\Users\Jeff\Downloads\labstreaminglayer-master\LSL\liblsl\ARM64\Release\liblsl64.dll : fatal error LNK1120: 1 unresolved externals
1>Done building project "lsl.vcxproj" -- FAILED.
========== Build: 0 succeeded, 1 failed, 2 up-to-date, 0 skipped ==========

If someone could help me figure out how to resolve these dependencies or even just send me a LSL build on ARM64 that would be great!

Thank you!

This should be fixed in the newer Boost we include. You can change to it by changing "LSL_LSLBOOST_PATH" to "lslboost" either via the CMake gui, the cmake command line tool or adding it to the Visual Studio CMake configuration.

Thank you this did work!

commented

@jeffmorr Do you mind sharing your arm64 liblsl .so file?

Liblsl gets compiled to a binary for a combination of Operating System / libc (almost almost the same) and processor architecture.

Most binaries include the native word size in bits in the name and a hint which platform the binary is for in the file extension, e.g. liblsl32.dll for a 32-bit windows dll, liblsl64.so for a 64 bit Linux / Android library or liblsl64.dylib for a 64 bit OS X dylib.

The CI system automatically builds the following combinations:

  • x86 Windows DLL (liblsl32.dll)
  • x64 Windows DLL (liblsl64.dll)
  • x64 Linux shared object (liblsl64.so)
  • x64 OS X shared object (liblsl64.dylib)

Android also has .so shared objects, but build with a different toolchain so they are not interchangable with .so files for regular Linuxes.
It's planned to build Android binaries for the following architectures on the
CI systems: arm64-v8a, armeabi, mips64, x86_64.

So, if you need binaries, tell us exactly what platform and cpu architecture you're using.