locked
Convert 32 bit DLL to 64 bit DLL

    Question

  • I have been attempting to convert our web application from a Win 2000 Server to a Win 2008 Server x64 machine.  Our web app currently has a custom COM+ object that I have been trying to convert to 64 bit.  I have VS 2008 Pro and I have made the project and built the class library.  On the project settings I have the compile platform set to x64.  I then am able to build the project without any errors.

    1.  I do not get a "make blahblah.dll" option under the file menu.  Shouldn't I see that?

     

    2.  When I do a build of the project I do get a DLL that is significantly smaller than the old DLL, however, when I try to regsvr32 this dll in the system32 directory of our x64 Server, I get the error message that reads, "The module "blahblah.dll" was loaded but the entry-point DllRegisterServer was not found.  Make sure that "blahblah.dll" is a valid DLL or OCX file and then try again."  However, when I regsvr32 the dll using the SysWOW64 regsvr32.exe, it registers fine.

    Why isn't the DLL being compiled correctly for x64?

     

    Any help is greatly appreciated!  Thanks!

    Friday, April 02, 2010 8:34 PM

All replies

  • Hi Shredtacular88,

       There're 2 versions of regsvr32.exe on 64-bit operating system. The one located at C:\Windows\SysWOW64 is 32-bit version. The one located at C:\Windows\System32 is 64-bit version. Your COM+ DLL is 32-bit, so the 32-bit version regsvr32.exe under C:\Windows\SysWOW64 should register it fine.

       The new DLL which is significantly smaller than the old one is a wrapper DLL which exposes the same interface as the original DLL.

       Following are some additional references:

       1. Accessing 32-bit DLLs from 64-bit code

       2. Migrating 32-bit Managed Code to 64-bit


    Please mark the right answer at right time.
    Thanks,
    Sam
    • Edited by SamAgain Monday, April 12, 2010 4:19 AM
    Monday, April 05, 2010 3:35 AM
  • Thanks for the reply.  I do realize that the System32 dir is for 64 bit and SysWOW64 is for 32 bit.  If the new DLL is a wrapper DLL, then what do I need to do to get it to work when registering it?  I need to have a working 64 bit DLL because when I enable 32 bit in IIS connections to our 64 bit database do not work anymore.  I know that 64-bit process cannot access 32-bit process so I need to be able to migrate my current 32-bit DLL into a 64-bit DLL.  It doesn't need to be a wrapper DLL...


    Monday, April 05, 2010 4:19 PM