Quicktime for windows link error DOESN'T happen in Juce


#1

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:

  1. 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.

  2. 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.

  3. Juce can fake the CFString, whose structure is not public.

  4. 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


#2

Nothing springs to mind… Maybe have a look through the autolinked libraries that juce is using?


#3

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.


#4

Also, the problem only appears with the most recent versions of qtml.lib - old versions don’t show the link error.


#5

Well, I’ve no idea. I don’t rememeber having to do anything clever to make it work…


#6

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.


#7

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.


#8

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…


#9

Is this with Quicktime 7.6.4 by any chance?

You might want to check this out…

http://lists.apple.com/archives/quicktime-api/2009/Sep/msg00096.html

edit: BTW Julian, there is the curiously named objc.dll in \Program Files\Common Files\Apple\Apple Application Support


#10

Oh, supplying obj-C libraries is the easy bit. Compiling your obj-C in visual studio is the hard bit!


#11

I have a hard enough time compiling C++ in Visual Studio! But I know there’s many that love it, so it must just be me!


#12

You just need to get a hang of it. Working on Visual Studio isn’t any tougher than working on xcode.


#13

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.


#14

Here’s how I finally fixed the problem with linking:

  1. Rolled back until I found a version of my pgm that didn’t have the linker error (about 3 months)
  2. Copied all the .cpp and .h files to that directory
  3. 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.


#15

It looks like the project needed a clean build. But you never know. As long as it works. :smiley:


#16

Yup, no problems since, though it wasn’t obvious you have to link the core video library to get CV-type methods (e…g visual context).

Based on the current state, what is the long-term support for quicktime for windows going to be - the com objects, revised api, or something else?


#17

After-all Visual Studio is also an application. It also has it’s own issues. :wink:

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. :slight_smile: