Okay, I researched this with a friend's copy of Virtual PC, using two virtual machines - a stock XP Pro install, and a stock XP Pro install with SP2 installed on top.

My DLL loads and runs in SP2, but fails in the stock install.

Why?

Apparently VC++2003 and VC+2005 are both embedding an entirely useless (and wrong) manifest inside my DLL. SP2 is apparently either ignoring it or able to handle it, while standard XP cannot handle it and refuses to load the DLL.

If I manually rip out the manifest, the DLL then works on standard XP.

Anyone have a clue how to fix this without manually ripping the manifest out of every DLL I compile? I kind of need to solve this problem; this application is for the IGF Student Showcase and I have a deadline sneaking up on me. Sad