sccn / lsl_archived

Multi-modal time-synched data transmission over local network
242 stars 134 forks source link

LSL DLL on ARM64 Architecture #352

Closed jeffmorr closed 5 years ago

jeffmorr commented 5 years ago

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!

tstenner commented 5 years ago

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.

jeffmorr commented 5 years ago

Thank you this did work!

smichalka commented 5 years ago

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

tstenner commented 5 years ago

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:

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.