In desperate need of COM interop help

From: Andrew S. Giles (AndrewSGiles_at_discussions.microsoft.com)
Date: 12/08/04


Date: Wed, 8 Dec 2004 14:35:31 -0800

OK, Ive run my head into this wall for too long. I need help.

I am developing an applicaiton in C# to present a user with a GUI to specify
a configurable list of machines that he wants to listen to the output of.
Specify a filename to shove all of the data (into Excel), and start the whole
thing going. I get that done no problem. The problem comes with the Data.
The data is coming from a different application, and I am not 100% sure of
what it will be written in, so COM says I is the way to get this working. I
provide the other applicaiton with an interface to my class(es) for storing
data, and when this other app uses COM to call my exposed methods, I will
take care of the rest. Easy as pie. Alas, life isnt so good. I think I am
messing up somewhere in the registration of the TLB, or in the C# (this is my
first serious C# app)

My application is contained in one *.cs file, and it handles most of the GUI
stuff, and internal data storage. In another file I have defined the classes
to hold this very important data, some enums to help turn the integers into
strings, and an interface that contains the methods I want to expose to the
outside APP. All of the classes (there are 4) all inherit the same interface
(and implement all 4 methods, though 3 of them are blank returns).
Everything compiles nicely into a nice executable (*.exe).

Now, I run REGASM on the executable file generating a *.tlb file as well as
telling me it registers the classes in the registry (and I can see them in
the OLE/COM object viewer). Everything is looking great.

I need to test to see if the COM works though, and I do not know when/where
the real app is, so I decide to write a simple (I hope) C++ application which
will get the interface I expose, and send the data over to me. This simple
C++ app I view as the client, and the GUI in C# as the server. I hope I am
not innaccurate in those terms.

What I hope to see happening is starting up the C# app, and start it
listening for data, then starting up my dummy client app, and sending data to
the C# application via the exposed COM interface.

However, I cannot instantiate the object or the pointer. I am getting
errors that the file does not exist or windows cannot find the file. this is
from the C++ debugger. I look at the COM/OLE object viewer, and I notice on
right-click there is an instantiate object option, which returns the same
error.

I have no idea what I am doing right, and what I am doing wrong.

Can someone point me to a simple article on how to porperly export 4 C#
classes sharing an interface to COM (the most recent book tells me all I need
to do is regasm to do this). And then how to consume those objects in C++.

here is an example of the class in C#:

public interface IFoo
{
   Populate1(int, int, int);
   Populate2(int);
   Populate3(int, int, string);
   Populate4(int, string);
}

public class MyClass1 : IFoo
{
   //Properties, etc
   Populate1();
   Populate2();
   Populate3();
   Populate4();
}

Same as above for the other 3 classes.

Any ideas? I am currently poring over _.NET and COM the Complete
Interoperability Guide_ trying to find something... but failing to see it.

Thanks

Andrew S. Giles



Relevant Pages

  • Re: Creating interface for other applications
    ... You could simply expose a com interface, ... Ignacio Machin ... I have a winforms app that handles various communications tasks. ... program provides without having to use the User Interface. ...
    (microsoft.public.dotnet.languages.csharp)
  • Re: COM Question
    ... interface (or base class - it doesn't have to specifically be an ... Each new object will reference this same DLL to get the ... Your "consumer" app also references the original base that holds the ...
    (microsoft.public.dotnet.framework.compactframework)
  • Re: Delphi Application Skin Ability Poll
    ... > To sale more copies to end users the beautiful interface of software is very ... you have the skill for do a BEAUTIFUL ... "Beauty" communicate us a lot of things and generate good (or bad, ... A commercial app must provide the sense of "you are a professional", ...
    (borland.public.delphi.non-technical)
  • Opinion Wanted - How to Expose a Collection
    ... expose collections in your interface. ... You're still exposing it in your interface. ... Implement a custom collection - Expose the collection, ...
    (microsoft.public.dotnet.languages.csharp)
  • Re: JDBC in CPYTHON
    ... I currently have an app on OSX that I wanted to migrate to NIX, ... JDBC driver that looks like it may work. ... I may not be understand your suggestion Marc, can the app and bridge ... Python database interface, for Mac OS X. ...
    (comp.lang.python)

Loading