DamRsn / NeuralNote

Audio Plugin for Audio to MIDI transcription using deep learning.
Apache License 2.0
1.17k stars 61 forks source link

Windows: Impossible to link with onnxruntime with different compiler version #21

Open DamRsn opened 1 year ago

DamRsn commented 1 year ago

On Windows, I get an error when linking with provided onnxruntime.lib:

'onnxruntime.lib' was created by a different version of the compiler than other objects like NeuralNote_Standalone ...

My MSVC version is 19.29.30148.0

tiborvass commented 1 year ago

Argh, this is because the static onnxruntime.lib was compiled with VS 2022 (MSVC 19.35.32215)

According to https://github.com/MicrosoftDocs/cpp-docs/blob/main/docs/porting/binary-compat-2015-2017.md, you would have this error when there's a compiler version mismatch even by a minor version.

Possible solutions:

  1. You build onnxruntime.lib yourself (pros: works, cons: much longer build time + extra steps for building)
  2. We compile onnxruntime.lib as part of NeuralNote repo's build scripts adding a lot more build time (pros: seamless build, cons: much longer build time)
  3. Investigate what happens if we turn off LTO flags such as /GL and /LTCG.
  4. Get rid of onnxruntime altogether. But I'll leave that to you to detail what it entails in a separate issue.
olilarkin commented 1 year ago

If you use github actions and do your build in the cloud, you can cache the ort-builder output so it doesn't take a long time to build if you didn't change the model. This is of course a bit annoying for local builds. Or just say it requires VS2022?

tiborvass commented 1 year ago

@olilarkin thanks! I think this is more a concern for people trying to build locally.

trirpi commented 10 months ago

Still having this problem currently on Windows. Any clue on how to build onnxruntime.lib yourself?

Would it suffice to follow these onnxruntime inferencing build instructions from within the ThirdParty directory before running build.bat?

DamRsn commented 10 months ago

You can build onnxruntime.lib yourself by following the steps indicated in the readme (Build from source, Windows).

Using the instructions from onnxruntime documentation won't work as it will create a dynamic library.

trirpi commented 10 months ago

Oh I see, didn't notice that part of the README was related to this issue. I did follow it but seems like I missed an error.

Had to install python 3.10 because the specific requirements.txt versions are not available anymore in 3.11 and had to update cmake from version 3.23 to the latest. Not sure if it was relevant but I also executed everything from the developer command prompt for VS 2022.

Now it builds, thanks!