loadlibrary() crashes

Hi,

I am upgrading a huge solution (25 projects, 250klines) from VS2005 to VS2010. I am working on a W7-64 machine but want to build a 32 bits app.
4 projects build DLL. I think (hope) that all projects are build in DEBUG mode.
During app initialization, I load a DLL with loadlibrary() but it crashes. In fact I have an ASSERT alert just before crashing but I can't understand what it means. I tried to use AfxLoadLibrary() but same crash.

First question : how can I be sure that the DLL is built in DEBUG mode (I tried all options of DUMPBIN in vain).

Second question : Is there a known issue with this function on a 64 bits machine ?

Note : when I launch the 'old' app (the one built with VS2005) using the same DLL, it works fine.

If you have an idea ...

TIA
Jean
Can you post the code before the call to loadlibrary - maybe the whole function?
Since you said that an ASSERT failed, it seems the problem is before the loadlibrary or AfxLoadLibrary()
I can assure you that LoadLibrary() works fine both in 32 bit and 64 bit builds of any Microsoft C/C++ compiler I have. So your issue indeed must be elsewhere.
I apologize I am off the office for a week and I haven't the code at home so I can't give you the piece of code. ASSERT is thrown in a MFC function.

The first thing I think about is : in the app (VS2005) doc, it is said that the app crashes if the app is compiled in DEBUG and DLL in RELEASE mode (or vs). The 'new' app (VS2010)is built in DEBUG mode. But how can I be sure that the DLL is ? I mean, VS2010 parameters for the DLL project is 'DEBUG' but is there a difference with VS2005 ?

TIA
Jean
You can try using 'Dependency Walker'. If the vc runtime dlls have a 'd' at the end(ex: msvcr120d.dll) your application is compiled in debug mode.
First question : how can I be sure that the DLL is built in DEBUG mode (I tried all options of DUMPBIN in vain).
Import/Export a function that is only defined within these configuration. E.g.:
1
2
3
4
5
#if defined(_DEBUG)
... GetDbgVersion();
#else
... GetVersion();
#endif 
This would prevent the dll from being loaded if the compiled configuration doesen't match.
Topic archived. No new replies allowed.