NeuralNote icon indicating copy to clipboard operation
NeuralNote copied to clipboard

Windows: Impossible to link with onnxruntime with different compiler version

Open DamRsn opened this issue 1 year ago • 6 comments

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

DamRsn avatar Mar 24 '23 20:03 DamRsn

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.

tiborvass avatar Mar 24 '23 22:03 tiborvass

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?

olilarkin avatar Mar 25 '23 06:03 olilarkin

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

tiborvass avatar Mar 25 '23 18:03 tiborvass

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?

trirpi avatar Sep 08 '23 21:09 trirpi

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.

DamRsn avatar Sep 08 '23 21:09 DamRsn

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!

trirpi avatar Sep 09 '23 17:09 trirpi