Jump to content

IrfanView JPEG-XL under WinXP


j7n
 Share

Recommended Posts


Thanks for your work, I started trying to make a build with cmake+mingw but I got problems with missing unix timing functions and I stopped.

On my windows server2003 with your plugin, I still see the same error on loading an jpx file, however I see the dll on the plugin list (without version number because you of missing GetPlugInInfo I guess). The dependency log is attached as rtf file (so you get colors).

GetPlugInInfo is used at least for version information, but I suspect it also returns a structure, pointing to a list of functions. that contains the function name to be used for encoding/decoding.

In the original I got:

ReadAnimatedJXL_W
ReadJXL_W
SaveJXL_W
ScanJXL_W
ShowPlugInOptions_W
ShowPlugInSaveOptions_W
GetPlugInInfo

Those are iview only functions that are probably listed when you call GetPluginInfo. this is why (I guess), at the end of the log iview is trying to get an empty proc address. in JPE

You would need to re-implement some of those functions but I do not know their prototype. probably iview forum may help you.

Loading JPpeg_XL.rtf

Link to comment
Share on other sites

that list says MSVCP140.DLL is the reason ? thats part of Microsoft Visual C++ Redistributable/vc_redist.x86.exe
what version of MSVCP140.DLL is used ? microsoft said latest supported version is v 14.27 

anyway here is the entire project, here the IrfanView author can add his export functions
he maybe programmed that dll to use his functions instead of the export of jxl.dll that can be done that way
more common or flexible way would be to use the export functions that jxl.dll (renamed Jpeg_XL.dll) gives 
those exported functions handle the encode/decode/compression


the readme.txt has information about how to do the next part

but i do not think msvcp140.dll is the reason 

 

https://www.file-upload.net/download-14783581/files.zip.html

 

 

------------------------------------------

seems i got confused a bit, it looked to me his jpeg_xl.dll loaded that unwanted functions in kernel32.dll 
but it doesnt, i must have eaten something wrong

 

that InitializeCriticalSectionEx is result of dynamic CRT (for both the one i compiled (where i know it works on xp)
and for the jpeg_xl.dll from IrfanView author, also for that "api-ms-win-core" dlls 
the CRT Irfanview author use work for xp
the reason why this is not in the import list is that it loads this at runtime and its that CRT (i wrote something about
that in msfn forum) 

it doesnt use InitializeCriticalSectionEx on xp it trys to load it, but then choose a working alternativ

now we left with a new question why it doesnt work on xp ? maybe that msjava.dll or that MPR.dll ? the jpeg_xl.dll i compiled do not use those
but is not having that export functions 

RamonUn is right those are not part of the compiled jxl.dll that then get renamed to jpeg_xl.dll

ReadAnimatedJXL_W
ReadJXL_W
SaveJXL_W
ScanJXL_W
ShowPlugInOptions_W
ShowPlugInSaveOptions_W
GetPlugInInfo

Edited by user57
Link to comment
Share on other sites

Your DLL works probably perfectly fine on XP, missing dynamic import are non problematic because none of them are made by jxl.dll, I just think iview needs his functions to be defined, the dll, this is why those extra functions are exported by the iview's jpeg_xl.dll.

If we had access to the documentation of plugin interface of iview, it would not be difficult, I think to implement those functions.

I looked for such doc/sdk but could not find it, I guess iview developer does not want random people to make plugins.

Link to comment
Share on other sites

  • 1 month later...

ok but since we seems to found the problem, why this is not progressing?

 

it is probaly the "delayload" of 2 dll´s

likely MPR.dll or msjava.dll (MPR = Multiple Provider Router)

https://docs.microsoft.com/en-us/windows/win32/secauthn/multiple-provider-router

 

 

the idea to make a jpegxl.dll and replaceing it do probaly not work for the reason that the iview´s author wrote plugin functions to jpegxl.dll (instead of using the dll directly)

 

i wrote a post about that problem, that also goes for that WEBP.dll (what is probaly linked with 16.8 or newer), you either need to fix the crt described in the other post or you go back to Visual Studio 2019 version 16.7 (maximum)

the microsoft website also says something about Visual C++ Redistributable version 14.27.29114.0 (maximum)

 

microsoft source:

https://docs.microsoft.com/en-us/cpp/porting/binary-compat-2015-2017?view=msvc-170

Edited by user57
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.


×
×
  • Create New...