Accessing a C# COM control from C++

Hi all,

I wrote a very simple user control in C#, and I'm trying to access it from my C++/MFC code. The control contains a single label in it. Here's the control code itself:

namespace HelloCom {

    [Guid("F0AE1BB2-A840-4341-B785-D8A54C81E643")]
    public interface HelloCom {
       
    }
   
    [Guid("111DCC11-900D-431c-B3A0-4B95C539A47D")]
    public partial class HelloComImpl : UserControl, HelloCom {
        public HelloComImpl() {
            InitializeComponent();
        }
    }
}


Here's what I've done so far:
* Signed my control with a strong key
* Clicked the "expose assembly to COM interop" and "make visible to COM" options
* regasm HelloCom.dll /tlb:HelloCom.tlb
* gacutil -i HelloCom.dll

However, despite all this, I still cannot see my control in the Toolbox on the C++ side, nor can I insert it via the "Insert ActiveX Control" menu option. What am I doing wrong ?
LVL 2
SinclairAsked:
Who is Participating?

Improve company productivity with a Business Account.Sign Up

x
 
Mohammed NasmanConnect With a Mentor Software DeveloperCommented:
take a look at this article, and notice the first paragraph in red

.NET Interop: Get Ready for Microsoft .NET by Using Wrappers to Interact with COM-based Applications
http://msdn.microsoft.com/msdnmag/issues/01/08/Interop/
0
 
Mohammed NasmanSoftware DeveloperCommented:
You can't create ActiveX controls with C#

what you did will work with Dlls, but I'm not sure if that will work for contorls with other languages than .Net
0
 
SinclairAuthor Commented:
Ugh... I really need this to be an ActiveX control. Are you sure there's no way to do this easily ? If so, what would you recommend ? Wrap the DLL in a C-based ActiveX wrapper, maybe ?

0
Upgrade your Question Security!

Your question, your audience. Choose who sees your identity—and your question—with question security.

 
Mohammed NasmanSoftware DeveloperCommented:
honesntly, I haven't tried to do that before

but why you want to use C# to created managed component that will be access from unmanaged code?
0
 
SinclairAuthor Commented:
mnasman:

I need a C# ActiveX control because our company is slowly switching to C#, but we have a massive (as in, prohibitively huge with respect to porting) legacy app written in C++/MFC that still needs to be extended from time to time with new features.

Thanks for that "red paragraph" article; I'll check it out right now and let you know how things turned out.
0
 
SinclairAuthor Commented:
Yeah, so it looks like there really isn't a good solution to this, unfortunately. Thanks for your help, mnasman, even though it's bad news for me :-)
0
 
Mohammed NasmanSoftware DeveloperCommented:
I'm sorry I didn't help much
0
 
SinclairAuthor Commented:
I don't blame you, I blame Microsoft :-/
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.