TALP-UPC / FreeLing

FreeLing project source code
Other
252 stars 96 forks source link

.exe file in freeling-4.1-win64 requres DLL for debugging. It seems debug build #82

Closed mrgchr closed 5 years ago

mrgchr commented 5 years ago

Hello,

I have tried latest release windows build freeling-4.1-win64.zip, and found that analyzer.exe requires DLL "MSVCR140D.DLL". It says:

---------------------------
analyzer.exe - System Error
---------------------------
The code execution cannot proceed because MSVCP140D.dll was not found. Reinstalling the program may fix this problem. 
---------------------------
OK   
---------------------------

---------------------------
analyzer.exe - System Error
---------------------------
The code execution cannot proceed because VCRUNTIME140D.dll was not found. Reinstalling the program may fix this problem. 
---------------------------
OK   
---------------------------

And, "dependencies\boost" folder contains over 1.4 GB files (in freeling-4.0, it was almost 40MB) with many "boost_*-vc140-mt-gd-1_61.dll"(or .lib). I think suffix "D" in "MSVCP140D.DLL" means "DEBUG build" and in boost "-g" means debug build.

It looks to me that build with debug profile has been released. Could you please take a look?

Regards.

mrgchr commented 5 years ago

I forgot to write my env: Windows 10 Pro(1803) 64bit, Visual Studio 2017(15.8.9) is installed.

lluisp commented 5 years ago

MSVCP140D.DLL is part of Visual Studio. If I recall correctly, FreeLing 4.1 binaries were built with VS 2015, so it may be that your VS version does not match the binaries.

However, it is likely that MS has a solution for that. Please refer to VS helpdesk or forums to find out how a program built with VS2015 can be run on a system with VS2017.

mrgchr commented 5 years ago

Thank you for reply.

In my env, there is a dll named "msvcp140.dll" in <C:\Windows\System32>, but it's not "msvcp140D.dll". My point is that this "msvcp140D.dll" suffix "D" mean "dll for debugging purpose". So, I'm just wondering if this freeling-4.1-win64.zip is released as "debug build".

default

lluisp commented 5 years ago

I shouldn't be.. However, FreeLing is built for windws using CMake, and I am not sure which defaults it uses. If you find a way to improve the CMakeList files, it will be very welcome. Finally, whatever is that file, it is not a part of FreeLing, but part of the Microsoft ecosystem, so it should be easy to obtain from the appropriate sources.

mrgchr commented 5 years ago

Thank you for your reply.

Unfortunately, I've never used CMake (I'm not even C++ programmer)...

But quick investigation, it has option to switch build type.

cmake  -DCMAKE_BUILD_TYPE=Release 

Debug vs Release in CMake (SO)

And I would like to say thank you for your work(mainly, freeling-4.0). It helps me a lot.

lluisp commented 5 years ago

Yes, I am aware of that option, but it creates problems with Python APIs in windows... Maybe that is the reason it is not used...

mrgchr commented 5 years ago

Oh, now I see, this. https://github.com/TALP-UPC/FreeLing/blob/master/APIs/CMakeLists.txt#L21

I found Japanese language article might be related about this. https://qiita.com/janus_wel/items/a673793d448c72cbc95e (ja)

Translated by google

cmake -DCMAKE_BUILD_TYPE=Release ..

  • Empty If you do not change the CMAKE_BUILD_TYPE symbol in the initial state, this state Even if you rewrite it with another value, it will be stored for a while, so if you want to specify it without specifying it again, set it to -DCMAKE_BUILD_TYPE =

If this information is true, this Python APIs build type configuration effects to the others (Just guessing, no proof)

lluisp commented 5 years ago

APIs are not built in the binary package (since they depend on the local python version). That file in APIs/CMakeList was never called when building FreeLing for windows.