1

I'm working with an application that uses 2 library, the first is stored outside of my project under c:\windows\system32 folder and it is used with:

[DllImport("FWLIB32.dll", EntryPoint="cnc_settimeout")]
public static extern short cnc_settimeout( ushort FlibHndl, int a );

The second one is imported in the Project references.

I need to use both of them, but if I config Visual studio to compile it with platform: "Any CPU" (and prefer 32bit) the first works and the second doesn't work, id I set platform x86 the second works but not the first.

In both cases it is thrown System.BadImageFormatException. How to work with both dll? Is it possibile?

This is the first dll details:

PE details
Date compiled:  Thu, July 21, 2011, 10:19:34 PM
Linker version: 6.0
Machine type:   Intel 386 or later processors and compatible processors
PE format:  PE32

Characteristics:    Dynamic-link library
DLL Characteristics:    None
Subsystem:  The Windows graphical user interface (GUI) subsystem

Min OS: Windows 95
Min OS version: 4.0
Subsystem version:  4.0
File version:   0.0

Manifest:   No
Images: No
Icons:  No

Dialogs:    Unknown (Not implemented)
String tables:  Unknown (Not implemented)
Accelerators:   Unknown (Not implemented)
Cursors:    Unknown (Not implemented)
Menu:   Unknown (Not implemented)
More details
designedFor:    32-bit Windows
typeOfFile: DLL
fileVersion:    5.9.0.1
productVersion: 5.9.0.1

Comments:   DCompanyName
CompanyName:    FANUC CORPORATION
FileDescription:    Data Window Library for Win32
FileVersion:    5, 9, 0, 1
InternalName:   Fwlib32
LegalCopyright: Copyright (C) 1996-2011 FANUC CORPORATION
LegalTrademarks:    @OriginalFilename
OriginalFilename:   Fwlib32.dll
PrivateBuild:   TProductName
ProductName:    FANUC Data Window Library

This is the second one details:

PE details    
Date compiled:  Fri, December 7, 2012, 9:25:47 AM
Linker version: 10.0
Machine type:   x64
PE format:  PE32+

Characteristics:    Application can handle > 2GB addresses (Large address aware); Dynamic-link library
DLL Characteristics:    Image is NX compatible (No eXecute)
Subsystem:  The Windows graphical user interface (GUI) subsystem

Min OS: Windows XP 64-Bit Edition / Windows Server 2003 / Windows Server 2003 R2
Min OS version: 5.2
Subsystem version:  5.2
File version:   0.0

Manifest:   Yes (406 bytes)
Images: No
Icons:  Yes (2 icons)

Dialogs:    Unknown (Not implemented)
String tables:  Unknown (Not implemented)
Accelerators:   Unknown (Not implemented)
Cursors:    Unknown (Not implemented)
Menu:   Unknown (Not implemented)
More details
designedFor:    32-bit Windows on Windows NT
typeOfFile: DLL
fileVersion:    4.0.0.0
productVersion: 4.0.0.0

CompanyName:    Siemens
FileDescription:    Rpc Sinumerik Assembly
FileVersion:    4.0.0.0
InternalName:   Siemens.Sinumerik.Rpc.dll
LegalCopyright: Copyright (C) 2012
OriginalFilename:   RpcSinum.dll

For me are both 32bit... but Why the first one works only with "Any CPU" option?

Tobia
  • 9,165
  • 28
  • 114
  • 219
  • This seems to be a dead end – Steve Feb 12 '15 at 15:48
  • Very bad news! I add some PE details – Tobia Feb 12 '15 at 16:13
  • The documentation of this question is backwards. An OCX is very rarely available in 64-bit, c:\windows\system32 stores 64-bit components. Contact the vendor of the first one and ask for the 32-bit version. If you get no help then using a surrogate is a possible workaround. – Hans Passant Feb 12 '15 at 16:13
  • @HansPassant i'm not really sure this is an OCX... I edited my question. The only thing I know is that they are dll and I can use them separately – Tobia Feb 12 '15 at 16:15
  • 2
    Contact Siemens for support, they can get you a 32-bit version. – Hans Passant Feb 12 '15 at 16:21
  • You're right there is no answer, I had to change the second DLL – Tobia Feb 13 '15 at 11:07

0 Answers0