Visual C++ Compiler Error C3344

Message Text

'provider (name, uuid) has major version ver1, but c1xx needs it to be at least ver2 -- please recompile

Circumstances

The compiler has been directed to start an attribute provider but has found that the provider’s version is too low. The name and uuid placeholders reproduce the corresponding arguments that were given with the provider attribute. The ver1 placeholder is the major number of the provider’s version, as returned by the GetVersion method of the IAttributeGrammar interface. The compiler’s requirement, shown in the ver2 placeholder, is presently 7.

A provider that is built with version 13.00.9466 of the compiler and has its IAttributeGrammar implementation injected in response to ProvProv attributes necessarily has version 7. This error therefore applies to providers that implement IAttributeGrammar independently of the compiler, which is surely unlikely, else to providers that have been built with some older version of the compiler and which ought be recompiled if they are to work with this newer compiler.

Especially since Microsoft does not document how programmers outside Microsoft may write attribute providers, this error seems likely to be intended just as a defence in the joint development of Microsoft’s compiler and Microsoft’s attribute provider(s). This would explain, and even justify, its omission from the product documentation.