NaoQi and Leap problems: An unhandled exception of type 'System.BadImageFormatException' ... and Could not load file or assembly
Asked Answered
Q

1

14

At the moment, I am running into a problem that I have not been able to solve with solutions on Google. Nothing has worked so far. When I compile Leap Motion code and import the Naoqi C# library, it works fine. When I actually try to connect to the robot with a line of code my program crashes. My program is set to build for any CPU. The .dlls are referenced for the Leap library and for the NaoQi library, and the .dlls are placed in the debug folder and the project folder for good measure. I have not clue what the problem is at this point.

Can someone here figure it out? I would be so happy to get this working.

Here is the first error message, it then asks me to break or continue:

An unhandled exception of type 'System.BadImageFormatException' occurred in LeapCSharp.NET4.0.dll

Additional information: Could not load file or assembly 'naoqi-dotnet4, Version=1.14.0.218, Culture=neutral, PublicKeyToken=b9b4e24bd78100d6' or one of its dependencies. An attempt was made to load a program with an incorrect format.

Either way, the program crashes. This is the text in the console log at this point:

'NaoLeap.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\WINDOWS\Microsoft.Net\assembly\GAC_64\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll'
'NaoLeap.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\WINDOWS\assembly\GAC_MSIL\Microsoft.VisualStudio.HostingProcess.Utilities\11.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualStudio.HostingProcess.Utilities.dll'
'NaoLeap.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Windows.Forms\v4.0_4.0.0.0__b77a5c561934e089\System.Windows.Forms.dll'
'NaoLeap.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\WINDOWS\assembly\GAC_MSIL\Microsoft.VisualStudio.HostingProcess.Utilities.Sync\11.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualStudio.HostingProcess.Utilities.Sync.dll'
'NaoLeap.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System\v4.0_4.0.0.0__b77a5c561934e089\System.dll'
'NaoLeap.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\WINDOWS\assembly\GAC_MSIL\Microsoft.VisualStudio.Debugger.Runtime\11.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualStudio.Debugger.Runtime.dll'
'NaoLeap.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\Users\Grace\Documents\Visual Studio 2012\Projects\NaoLeap\NaoLeap\bin\Debug\NaoLeap.vshost.exe'
'NaoLeap.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Core\v4.0_4.0.0.0__b77a5c561934e089\System.Core.dll'
'NaoLeap.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Xml.Linq\v4.0_4.0.0.0__b77a5c561934e089\System.Xml.Linq.dll'
'NaoLeap.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Data.DataSetExtensions\v4.0_4.0.0.0__b77a5c561934e089\System.Data.DataSetExtensions.dll'
'NaoLeap.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\Microsoft.CSharp\v4.0_4.0.0.0__b03f5f7f11d50a3a\Microsoft.CSharp.dll'
'NaoLeap.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\WINDOWS\Microsoft.Net\assembly\GAC_64\System.Data\v4.0_4.0.0.0__b77a5c561934e089\System.Data.dll'
'NaoLeap.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Xml\v4.0_4.0.0.0__b77a5c561934e089\System.Xml.dll'
The thread 'vshost.NotifyLoad' (0x440) has exited with code 0 (0x0).
The thread '<No Name>' (0x1914) has exited with code 0 (0x0).
The thread '<No Name>' (0xa90) has exited with code 0 (0x0).
The thread 'vshost.LoadReference' (0x1a08) has exited with code 0 (0x0).
'NaoLeap.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\Users\Grace\documents\visual studio 2012\Projects\NaoLeap\NaoLeap\bin\Debug\NaoLeap.exe', Symbols loaded.
'NaoLeap.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Drawing\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Drawing.dll'
'NaoLeap.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\Accessibility\v4.0_4.0.0.0__b03f5f7f11d50a3a\Accessibility.dll'
'NaoLeap.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\Users\Grace\documents\visual studio 2012\Projects\NaoLeap\NaoLeap\bin\Debug\LeapCSharp.NET4.0.dll'
A first chance exception of type 'System.BadImageFormatException' occurred in LeapCSharp.NET4.0.dll
An unhandled exception of type 'System.BadImageFormatException' occurred in LeapCSharp.NET4.0.dll
Additional information: Could not load file or assembly 'naoqi-dotnet4, Version=1.14.0.218, Culture=neutral, PublicKeyToken=b9b4e24bd78100d6' or one of its dependencies. An attempt was made to load a program with an incorrect format.
'NaoLeap.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Configuration\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Configuration.dll'
The program '[3484] NaoLeap.vshost.exe: Managed (v4.0.30319)' has exited with code 0 (0x0).
The program '[3484] NaoLeap.vshost.exe: Program Trace' has exited with code 0 (0x0).

I tried to use fuslogvw. Here are the two log reports for failed assemblies when fuslogvw is refreshed after the program crashes.

1)

<meta http-equiv="Content-Type" content="charset=unicode-1-1-utf-8"><!-- saved from url=(0015)assemblybinder: --><html><pre>
*** Assembly Binder Log Entry  (2/1/2013 @ 7:24:49 PM) ***

The operation was successful.
Bind result: hr = 0x0. The operation completed successfully.

Assembly manager loaded from:  C:\Windows\Microsoft.NET\Framework64\v4.0.30319\clr.dll
Running under executable  C:\Users\Grace\Documents\Visual Studio 2012\Projects\NaoLeap\NaoLeap\bin\Debug\NaoLeap.vshost.exe
--- A detailed error log follows. 

=== Pre-bind state information ===
LOG: User = Grace-PC\Grace
LOG: DisplayName = Accessibility, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 (Fully-specified)
LOG: Appbase = file:///C:/Users/Grace/documents/visual studio 2012/Projects/NaoLeap/NaoLeap/bin/Debug/
LOG: Initial PrivatePath = NULL
LOG: Dynamic Base = NULL
LOG: Cache Base = NULL
LOG: AppName = NaoLeap.vshost.exe
Calling assembly : System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089.
===
LOG: Start validating all the dependencies.
LOG: [Level 1]Start validating native image dependency mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089.
WRN: No matching native image found.

</pre></html>

2)

<meta http-equiv="Content-Type" content="charset=unicode-1-1-utf-8"><!-- saved from url=(0015)assemblybinder: --><html><pre>
*** Assembly Binder Log Entry  (2/1/2013 @ 7:24:50 PM) ***

The operation was successful.
Bind result: hr = 0x0. The operation completed successfully.

Assembly manager loaded from:  C:\Windows\Microsoft.NET\Framework64\v4.0.30319\clr.dll
Running under executable  C:\Users\Grace\Documents\Visual Studio 2012\Projects\NaoLeap\NaoLeap\bin\Debug\NaoLeap.vshost.exe
--- A detailed error log follows.
=== Pre-bind state information ===
LOG: User = Grace-PC\Grace
LOG: Where-ref bind. Location = C:\Users\Grace\Documents\Visual Studio 2012\Projects\NaoLeap\NaoLeap\bin\Debug\NaoLeap.exe
LOG: Appbase = file:///C:/Users/Grace/documents/visual studio 2012/Projects/NaoLeap/NaoLeap/bin/Debug/
LOG: Initial PrivatePath = NULL
LOG: Dynamic Base = NULL
LOG: Cache Base = NULL
LOG: AppName = NaoLeap.vshost.exe
Calling assembly : (Unknown).
===
WRN: Native image will not be probed in LoadFrom context. Native image will only be probed in default load context, like with Assembly.Load().

</pre></html>
Quizzical answered 2/2, 2013 at 0:37 Comment(1)
Try to restart your vs surprisingly, it worked with me!!Luciana
S
34

Could not load file or assembly 'naoqi-dotnet4

From the vendor's documentation is pretty clear that NAO contains native C++ code and that it must be built to target x86 (32-bit code). You are however running your main EXE in 64-bit mode. The BadImageFormatException is the result, a 64-bit process cannot load assemblies that contain 32-bit native code.

Right-click your EXE project, Properties, Build tab. Change the Platform target to "x86".

Scherzando answered 2/2, 2013 at 1:31 Comment(4)
That fixed it! Before, I was just changing it to x86 in the project build settings. The real fix was when I selected "Configuration Manager..." next to the "Start" debug button and changed the platform to x86.Quizzical
I had a similar problem, with the badimageformatexception, where I had added an external project that was building with platform target x86 (I'm working on a 64-bit machine). - I set the external project to build to 'any cpu', and all is good :)Sonja
Do not tinker with the solution platform name, it is not relevant to .NET projects. Only the setting I documented matters. Don't forget to also change it for the Release configuration.Scherzando
Similar problem for me, the platform target for one project in the solution was mistakenly changed to Any CPU, causing this issue.Midwifery

© 2022 - 2024 — McMap. All rights reserved.