PDA

View Full Version : dll hell



jhowland
4th September 2008, 13:36
I seem to be in dll hell. I have installed qt4.4.1, commercial edition, onto a PC with Visual Studio 2005. I also installed the most recent version of qwt. (5.1.1)

When I try to run the demo apps in qwt, (and when I clean and rebuild apps that I have written--they also use qwt)--I get

"The Procedure entry point ?setAlignment@@Layout@@... could not be located in the dynamic link library qtguid4.dll"

I have searched my entire hard drive, and there is only one qtguid4.dll on the disk. When I change its name, I get an an error that says windows can't find the dll at all, so that does appear to be the one I'm using--and its new, its the one that came with the qt4.1.1 install.

At one point, I did have earlier versions of qt on the machine, but I have cleaned them all off and re-installed ONLY the 4.1.1 version. I have reinstalled and rebuilt qwt, and my apps. I can't get away from the entry point error

any ideas? All of my apps work (on a different machine) under QT 4.2.3

Jonathan Howland

cgaal
4th September 2008, 15:19
Are you *really* sure that you've cleaned and rebuilt *all* binaries? From what you've described here, it looks like somewhere (whether it's your own app/dlls or qwt), you still have a binary that was built against a newer version of Qt than you're loading at runtime.

Note that your unresolved symbol - QLayout::setAlignment (I assume you meant "QLayout" and not "Layout"?) had a new overload added for Qt 4.3. If you have a binary that was built against Qt 4.4 and uses this overload, this could explain why you're having trouble with loading Qt 4.1.

You can use Dependency Walker (depends.exe) on Windows to track down the problem binary. Open your executable in Dependency Walker and profile it. You should see exactly which binary has the missing dependency, and then rebuild that binary.

HTH,
-Chris

jhowland
6th September 2008, 02:02
Are you *really* sure that you've cleaned and rebuilt *all* binaries?

yes

From what you've described here, it looks like somewhere (whether it's your own app/dlls or qwt), you still have a binary that was built against a newer version of Qt than you're loading at runtime.

i agree thats what it looks like, but I can't find it

Note that your unresolved symbol - QLayout::setAlignment (I assume you meant "QLayout" and not "Layout"?)

yes

had a new overload added for Qt 4.3. If you have a binary that was built against Qt 4.4 and uses this overload, this could explain why you're having trouble with loading Qt 4.1.

oops, I made a mistake when I said 4.1. This is all 4.4.1--that's the only thing that is on my machine--its QT4.4.1 VS2005. I have uninstalled all other versions of everything, and rebuilt. I still get the error. Here it is, by the way, as reported by dependency walker

?setAlignment@QLayout@@QAEXV?$QFlags@W4AlignmentFl ag@Qt@@@@@Z

You can use Dependency Walker (depends.exe) on Windows to track down the problem binary. Open your executable in Dependency Walker and profile it. You should see exactly which binary has the missing dependency, and then rebuild that binary.

I did, and it is indeed the one located in the directory C:\qt\4.4.1\bin



its creation and modification dates are Tuesday, July 29, 2008, 10:55:44 AM. It's size is

11.0 MB (11,620,352 bytes)

So, this leads me to believe that perhaps this distribution of QT has a problem in it? I can't believe I'm the only one who has tried this. Any other ideas?



HTH,
-Chris

My answers are inserted into your text--my apologies, I'm trying to figure out how to use this reader

jacek
6th September 2008, 14:30
My answers are inserted into your text--my apologies, I'm trying to figure out how to use this reader
Here's a short document that describes all bbCodes used on our forum and their usage: http://www.qtcentre.org/forum/misc.php?do=bbcode