Click here to Skip to main content
13,300,002 members (62,964 online)
Rate this:
Please Sign up or sign in to vote.
See more:

I ran into this and was wondering if somebody has an answer for it.

I created a C# COM object and was trying to QI for the custom interface.

Here is the C# COM code:

public interface IiAddin 
  long Initialize(Object app);
  long Uninitialize();
namespace TEST_CSharpAddin
  public interface CSharpAddin_Interface : IiAddin {
  public interface CSharpAddin_Events {
  public class CSharpAddin : CSharpAddin_Interface
      public long Initialize(Object app){
        return 0;
      public long Uninitialize(){
        return 0;

( yes the project has "Make assembly COM-Visible" and "Register for COM interop" set in the project settings )

( and I have added "COMVisible(true)" to all of the interfaces as well, with no success either)

Here is the C++ code that does the QI for the interface:

HRESULT hResult;
hResult = CLSIDFromProgID(_T("TEST_CSharpAddin.CSharpAddin"), &ClassID);
IDispatch *pDispatch;
hResult = ::CoCreateInstance(ClassID, NULL, CLSCTX_INPROC_SERVER, IID_IDispatch, (void **)&pDispatch);
CComQIPtr<IiAddin> spAddIn(pDispatch);  // << FAILS >>

// So I tried this instead:
IiAddin* pQIAddIn;
hResult = pDispatch->QueryInterface( IID_IiAddin, (void**)&pQIAddIn);  // << FAILS >>

I did the strong name, put it in the GAC and registered the typelib on the C# object, like this article suggests:

Calling Managed .NET C# COM Objects from Unmanaged C++ Code[^]

However, when I run the C++ code , the CLSIDFromProgID and CoCreateInstance succeed, but the QI for IiAddin fails with 0x80040154 ( class not registered )

Any ideas?
Posted 8-Oct-13 5:24am
Updated 8-Oct-13 5:38am
cariolihome 8-Oct-13 17:33pm
Please, specify value of IID_IiAddin constant, and attach tlb library

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

  Print Answers RSS
Top Experts
Last 24hrsThis month

Advertise | Privacy |
Web01 | 2.8.171207.1 | Last Updated 8 Oct 2013
Copyright © CodeProject, 1999-2017
All Rights Reserved. Terms of Service
Layout: fixed | fluid

CodeProject, 503-250 Ferrand Drive Toronto Ontario, M3C 3G8 Canada +1 416-849-8900 x 100