- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
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?
コピーされたリンク
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
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.
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
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.
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
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.
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
The .dll is written in Fortran and compiled with Intel Visual Fortran Composer XE 2013.
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
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.
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
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.