- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
My team has developed a .dll using Intel Parallel Studio XE for use in a larger application developed in Visual Studio 2012 (vb.net). When attempting to run the program on TWO machines, both distinct from the development machine, upon making a call to the .dll we receive the error provided in the Subject. Thinking that google would be my friend, I searched for the error, finding that most people who have experienced this issue have found that setting the application to target an x86 processor rather than "Any" or x64 resolved the issue. This is not the case for our team. Using corflags.exe reveals the application to be x86 targeted, and using dumpbin /headers shows that the (unmanaged) .dll is also x86 targeted. Furthermore, it shows that both libifcoremd.dll and libmmd.dll, both dependencies of our "Dll1.dll" (name subject to change) are also x86 targeted. Since everything in the chain appears to be x86 targeted, I am at a complete loss as to how I might solve this. For reference, I have tested this with a test app which has a single button that calls the .dll, and nothing more. No joy.
Suggestions? Questions?
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Sorry about that. All computers involved are running Windows 7 Enterprise Edition. I've used MS Depends already to find that our .dll has libifcoremd.dll and libmmd.dll as dependencies. What should I be verifying with it besides that?
This "program" currently consists of an executable that loads a windows form with a button, which calls the .dll. The error message associated with the exception is "An attempt was made to load a program with an incorrect format." I'm struggling to see how it's related to the Windows Preinstallation Environment.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Dll1.dll (our .dll file)
CPU: x86
Image Ver: 0.0
OS Ver: 6.0
Subsystem Ver: 6.0
libmmd.dll (Intel .dll)
CPU: x64
Image Ver: 0.0
OS Ver: 5.2
Subsystem Ver: 5.2
libifcoremd.dll (Intel .dll)
CPU: x64
Image Ver: 13.1
OS Ver: 5.2
Subsystem Ver: 5.2
Interesting. I built it as a Win32 .dll; why would it include dependencies to x64-based .dll's? Since they're unmanaged, I can't edit them with corflags.exe; how can I resolve that?
Edit: I found and installed some redistributable libraries and am now getting an error related to the fact that I'm passing essentially no real data to the .dll. I'm going to attempt it in the actual application as soon as possible. It might be nice if the documentation for the development tool had included information about including redistributables.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Sergey Kostrov wrote:
...
#ifndef
...
Since I'm coding in vb.net (as mentioned in my op), C commands won't help me. Furthermore, installing the redistributables solved the System.BadImageFormatException. Now I'm stuck with an error in Dependency Walker:
"Error: At least one module has an unresolved import due to a missing export function in an implicitly dependent module."
The only module in error is IESHIMS.DLL, which is delay-loaded, and thus shouldn't cause any problems...
When I run the test program (with just the button to call the .dll), it gives the error message in Error.png attached to this message. When I run the actual application we're developing it tells me that it cannot find a module and gives Dll1.dll as the file in error, which from what I understand means it could be any dependency of Dll1.dll.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
The .dll is written in Fortran and compiled with Intel Visual Fortran Composer XE 2013.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
For posterity, the problem has been solved for the x86 version of this software. The solution was as follows:
- Install redistributables on target machine (bundle with installer package as merge modules for deployment)
- Use Dependency Walker to find missing .dll's (IEShims.dll, gpsvc.dll, sysntfy.dll in our case), then find them somewhere (google worked for our team)
- Bundle .dll used in application with all necessary supporting libraries and either update PATH variable of Environment Variables in Windows or simply place them all together in the same directory during package installation
- Enjoy the proper operation of your software
Thanks for the brainstorming sessions Sergey, I appreciate your quick attention.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Usually in case of unresolved import/exports the best option is to use loader snaps provided by windbg as dependency walker sometimes is not responsive.

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page