Your error message says "Unable to enlist in the transaction": this is the hint. Many years ago (in NT4) what's now called COM+ was called MTS, short for Microsoft Transaction Server, and its declared purpose was to support distributed transactions among different products.
Apparently, your COM+ component is configured with "transaction context/required".
If this is true, and you have access to the VB6 source (or to the person who wrote it), see whether you can change this to "transaction context/supported"; otherwise, you should create a transaction context in your C++ code before using the com+ component.
See also:
COM+ Interfaces [
^] with emphasis on
ITransactionContext interface[
^].
If your COM+ component is not configured with "transaction context/required", my guess is wrong.
Hope this helps,