Link to home
Start Free TrialLog in
Avatar of thready
thready

asked on

WPF project and COM objects

Hi Experts,

I have a WPF application that talks to a CLR class library that calls into C++.  The reverse is proving more difficult.  I've seen the method where you can pass a delegate as function pointer, but I find that too intrusive and need to change my C++ implementation to support it.

So I think my current best option might be to turn a class in my WPF application into a COM server.  I have done so, but since this is a WPF application, there is no dll output.  Clearly I could create another intermediate class library just for this COM object, and then use this class library from my WPF application.  But is there a way to use the exe instead of a dll to register in WIndows?

Also, if I do use an intermediate class library, how do I get this COM object to talk to the rest of the WPF application?  I can't instantiate it in my WPF program and have it CoCreated by the C++ native code that will be creating it as well....  

Thanks,
Mike
ASKER CERTIFIED SOLUTION
Avatar of jkr
jkr
Flag of Germany image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of thready
thready

ASKER

I did not think of that.  That's a much simpler idea!  I can keep this out of the cross platform c++ and inside of the class library as well...

I'm still curious about how one is supposed to CoCreate a class and have the class implementation talk to WPF...   It's created by the C++ side, so then it's in-process.  Does this mean that callbacks from the COM class will need to be static?  (I wonder if I'm not making sense here)....
SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of thready

ASKER

I don't really understand that method.  It makes sense to me, but how to do it with a .lib...  I don't know...  I'm starting to lose interest in trying to keep all business logic in c++ so that it's reusable everywhere.  Too time consuming- and what does it give me?  Not that much in the end.  I just wish my code base would never have to be touched again... But it seems I keep writing the same kinds of things for new projects.

If I do everything in C#, I'll be much better off.  Just no cross-platform stuff.  Please talk me out of dropping this if you think it's all worth it?  :-)
SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of thready

ASKER

I have/had a goal to write all my business logic in pure cross-platform c++, with the idea that c++ was the most common denominator between systems with the best chance for reuse.  However, I don't have much code, but wanted to write everything one last time.  I think I'm not getting that much out of this goal though.  And I do like C# best.  I think in the name of completing projects fast with less headaches, I'll stick to C# for now....   and hopefully not kick myself later on..