I have a third-party IDL file which, when compiled, generates a header and an _i.c file. All three of these files are part of a Visual Studio 2010 project. (So far the project is empty other than attempted COM initialization stuff.)
I can get the project to compile by calling
CoInitialize(NULL);
CoCreateInstance(stuff);
At runtime CoCreateInstance() returns a "Class not registered" error.
Everything I can find on the Internet says to register a COM object by running regsvr32 on the DLL file or EXE file. However I only have an IDL file. I tried registering the EXE file generated by the project, but I got an error saying the module was "loaded but the entry-point DLLRegisterServer was not found."
I'm honestly not sure what else to try.
IDL files define interfaces, not implementations. If literally all you have of this third-party component is an IDL file then you have nothing you could register.
It's possible that the IDL file describes interfaces you're to implement that third-party code calls into; in that case you wouldn't CoCreateInstance them, they might CoCreateInstance you. But given the amount of information, I'm leaning towards you're missing the actual third-party component or you're passing the wrong thing to CoCreateInstance.