+1 - in the past I've used https://www.dependencywalker.com/ 
<https://www.dependencywalker.com/> to figure out the problem. On mac you can 
use otool -L, and on linux you can use ldd.

> On Jul 11, 2022, at 9:38 AM, Alex Earl <slide.o....@gmail.com> wrote:
> 
> Sometimes the file not found error occurs because a dependency of the dll can 
> not be found. 
> 
> On Sun, Jul 10, 2022, 20:06 Steven Manross <ste...@manross.net 
> <mailto:ste...@manross.net>> wrote:
> Howdy all,
> 
>  
> 
> I am somewhat new to pythonnet and .NET programming, and just joined the 
> mailing list.  You have my apologies if I am missing something simple.  I am 
> aware that BadImageFormatException suggests that I’m trying to open an x64 
> DLL on a 32-bit OS or python installation (or vice versa), but neither seem 
> to be the case (that I can tell).  Depending on exactly how I call the code, 
> I get a File Not Found or Bad Image Exception.
> 
>  
> 
> The File Not Found is interesting since the files live in the same directory 
> as a working DLL (AlphaVSS.Common works - built to run on any architecture, 
> AlphaVSS.x64 doesn’t).
> 
>  
> 
> Specifics:
> 
> * Python 3.9.13 (tags/v3.9.13:6de2ca5, May 17 2022, 16:36:42) [MSC v.1929 64 
> bit (AMD64)] on win32
> 
> * uninstalled Python 3.10 temporarily so I cant get you that detail (sorry)
> 
> * And the Windows version clearly states it’s Windows Server 2016 x64
> 
>  
> 
> I’m doing my testing from ipython.
> 
>  
> 
> The code below was tested with Python 3.9 x64 (pythonnet 2.5.2 via wheel 
> file) and Python 3.10 x64 (installed pythonnet 3.0.0-dev1 from git master a 
> few days ago) on Windows Server 2016 x64 Evaluation patched for current .NET 
> Frameworks 2022-06 and both produce an error on the following code.
> 
>  
> 
> AlphaVSS DLLs were generated via powershell/nuget, and I just copied the DLLs 
> from my powershellmodules dir to the “clr_dir” below for testing 
> (documentation suggests you copy the files to the same directory for use).  
> This DLL was created for .NET Framework 4.5 and I’ve installed Framework 4.8 
> and this Cumulative update:
> 
>  
> 
> 2022-06 Cumulative Update for .NET Framework 4.8 for Windows Server 2016 for 
> x64 (KB5014630)
>  
> 
> This code is eventually intended to manipulate the Volume Shadow Copy Service 
> on Windows.  I am aware that there is limited functionality for ShadowCopies 
> from DISKSHADOW and WMI, but wanted to get more functionality from this VSS 
> .NET Library (specifically Shadow Copy Sets), and pythonnet seemed like a 
> great way to implement this code in my favorite scripting language.
> 
>  
> 
> Here is the documentation for the DLLs (version 2.0.0) if anyone wants that:
> 
> https://alphavss.alphaleonis.com/api/Alphaleonis.Win32.Vss.html 
> <https://alphavss.alphaleonis.com/api/Alphaleonis.Win32.Vss.html>
>  
> 
> git source:
> 
> https://github.com/alphaleonis/AlphaVSS 
> <https://github.com/alphaleonis/AlphaVSS>
>  
> 
> I double checked permissions on the DLLs and I have full control as the 
> administrator.  UAC is completely turned off on this machine (if it matters).
> 
>  
> 
> Any suggestions would be appreciated.  This is a test system, so I can do 
> just about anything to it including rebuilding it from scratch as it was 
> built specifically for testing this.  This is a VM on Hyper-V 2016 (I doubt 
> that matters).
> 
>  
> 
> Thank you for your time!
> 
>  
> 
> Steven
> 
> #   ipython dir output
> In [16]: ! dir "c:\users\administrator\desktop\alphavss"
> 
> Volume in drive C has no label.
> 
> Volume Serial Number is 8C70-F8A3
> 
>  
> 
> Directory of c:\users\administrator\desktop\alphavss
> 
>  
> 
> 07/09/2022  03:10 AM    <DIR>          .
> 
> 07/09/2022  03:10 AM    <DIR>          ..
> 
> 12/03/2019  08:37 PM            69,632 AlphaVSS.Common.dll
> 
> 12/03/2019  08:37 PM            21,408 AlphaVSS.Common.pdb
> 
> 12/03/2019  08:37 PM           618,522 AlphaVSS.Common.xml
> 
> 12/03/2019  08:37 PM           325,120 AlphaVSS.x64.dll
> 
> 12/03/2019  08:37 PM           271,872 AlphaVSS.x86.dll
> 
> 12/03/2019  08:29 PM           342,392 Ijwhost.dll
> 
> 07/09/2022  03:09 AM    <DIR>          runtimes
> 
> 07/09/2022  03:10 AM    <DIR>          win-x64
> 
> 07/09/2022  03:10 AM    <DIR>          win-x86
> 
>  
> 
> # code
> 
> import sys
> 
> import clr
> 
> import System
> 
> # from System import Reflection
> 
>  
> 
> clr_dir = "C:\\Users\\Administrator\\Desktop\\AlphaVSS"
> 
> if clr_dir not in sys.path:
> 
>     sys.path.append(clr_dir)
> 
>  
> 
> # common_vss = Reflection.Assembly.LoadFile(f'{clr_dir}\\AlphaVSS.Common.dll')
> 
> clr.AddReference("AlphaVSS.Common") #pylint:disable=I1101
> 
>  
> 
> import Alphaleonis.Win32.Vss as alphavss
> 
>  
> 
>  
> 
> # clr.AddReference("AlphaVSS.x64") #pylint:disable=I1101
> 
> vss = alphavss.VssFactoryProvider.Default
> 
> # x64_vss = Reflection.Assembly.LoadFile(f'{clr_dir}\\AlphaVSS.x64.dll')
> 
> # BadImageFormatException: An attempt was made to load a program with an 
> incorrect format. (Exception from HRESULT: 0x8007000B)
> 
>  
> 
> try:
> 
>     factory = vss.GetVssFactory()
> 
> except System.BadImageFormatException as e:
> 
>     print(f'Bad Image Format: {e}')
> 
> except OSError as e:
> 
>     # FileNotFoundException: Could not load file or assembly 'AlphaVSS.x64, 
> Version=2.0.0.0, Culture=neutral, PublicKeyToken=959d3993561034e3' or one of 
> its dependencies. The system cannot find the file specified.
> 
>     print(f'File Not Found: {e}')
> 
> _______________________________________________
> PythonNet mailing list -- pythonnet@python.org <mailto:pythonnet@python.org>
> To unsubscribe send an email to pythonnet-le...@python.org 
> <mailto:pythonnet-le...@python.org>
> https://mail.python.org/mailman3/lists/pythonnet.python.org/ 
> <https://mail.python.org/mailman3/lists/pythonnet.python.org/>
> Member address: slide.o....@gmail.com <mailto:slide.o....@gmail.com>
> _______________________________________________
> PythonNet mailing list -- pythonnet@python.org
> To unsubscribe send an email to pythonnet-le...@python.org
> https://mail.python.org/mailman3/lists/pythonnet.python.org/
> Member address: ma...@unity3d.com

_______________________________________________
PythonNet mailing list -- pythonnet@python.org
To unsubscribe send an email to pythonnet-le...@python.org
https://mail.python.org/mailman3/lists/pythonnet.python.org/
Member address: arch...@mail-archive.com

Reply via email to