A very strange problem in VC8. I’ve been learning QuickTime For Windows SDK and ran into a problem with using QTNewDataReference type methods from qtml.lib. In other programs (including some of Apple’s demos) I get the following error:
[color=red]
unresolved external symbol @CFStringCreateWithCharacters@12 referenced in function…[/color]
Checking, ALL the CFString methods don’t link. Everything else seems OK.
However… when I did a compile in Juce I DID NOT have this problem - everything links and the QuickTime demo runs perfectly.
So either:
Juce is doing something in header includes, etc, library links, vc config, etc. so that the linker can find the CFString methods for the windows platform.
Juce is NOT using CFString converter juceStringToCFString which calls CFstringCreateWithCharacters (source does say “Mac only”) and is using another method to open the quicktime files on the disk. This implies that Juce does not use the newer QT methods like QTNewDataReference… on windows, which seems unlikely, or there’s another way to open the file with unicode support and no CFString.
Juce can fake the CFString, whose structure is not public.
Juce is opening the movie via a file dialog, and circumvents the CFstring problem by never manipulating the file path in the program - in this case, trying to load by supplying a wide-char file path from windows in the source wouldn’t work.
Any comments/advice would be appreciated. While Juce is compiling, there is something general about using the newer QT library that I don’t understand, and don’t want to proceed until I due.
Any help would be appreciated - if there is a way to use the newer QuickTime methods
First thing I tried was matching the autolinked libraries listed in autolinklibraries.h - nada. If there are other libraries besides these, possibly. I’ve seen occasional references on the web to this, but no solution.
Hm, well then it looks like I’m the one who probably did something “special”… thanks!
I’ll keep researching, post if I find anything relevant to the discussion. I was unnerved by the comments on some sites about apple deprecating QT for windows along with said linker error - was thinking that this might be a slow dropping off of support. So, it’s not that, most likely a mysterious VC config problem.
It does seem unlikely to me that Apple will continue the windows QT stuff for much longer. They’re constantly moving towards a purely obj-C API, and providing some kind of PC version of that wouldn’t be very easy.
Yea, we’re debating whether to start teaching obj c to our web design students at my school right now. Even the graphic design students have to learn object-oriented style JavaScript and Actionscript 3 these days, and the notion of a “web designer” increasingly includes the ability to create custom iphone apps instead of just building a website. Since flash doesn’t run on many mobiles (like the iphone) they can’t just learn actionscript. As a long-ago mac programmer (I worked with the first mac c and mac fortran compilers in 1985) it should be interesting…
I personally believe that being a developer u should not support any os as specific. As each os and its applications have drawbacks as well as advantages. I don’t like PC as well as Mac. But i try to give my software best of all. Thats wat we should do as a developer.
Let end user decide wat is best and wat is not.
Thumb rule never believe anyone. Give ur best of best.
Here’s how I finally fixed the problem with linking:
Rolled back until I found a version of my pgm that didn’t have the linker error (about 3 months)
Copied all the .cpp and .h files to that directory
Re-compiled - no problem!
In other words, it is SOMETHING with VC++. I have looked at the project and options areas for a very long time and cannot see any differences. Whatever causes this error in VC++ is must be a very small change in project configuration.
After-all Visual Studio is also an application. It also has it’s own issues.
Am not very sure about it. But since snow leopard has released and apple has come up with QuickTime Version 10.0 (51), there are chances that some of the api’s might be revised. But that is something that we would have to wait for.