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
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
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
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? :-)
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
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
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..
ASKER
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)....