Reputation: 15227
I've implemented a c# IDispatch interface to allow late binding to my managed code. It seems to work when called by some third party programs but not others. It's not making it into the managed code section to output debug information. It's very possible some of the interface descriptions (which I converted from c++) are incorrect so it's not hitting the code. Is it possible to identify which methods the third party software is attempting to call?
Thanks
EDIT: To try and make the question less vague, I'll describe the symptoms. I've written a test case that calls the IDispatch library fine. It works with one third party piece of software. When I run it on the second, it spits an error with no information as to what function it was trying to call when the error occurred. There are about 100 functions in the interface so the only option I could think of was as suggested is to try and call all of them from some test code. Both pieces of third party software are unmanaged code.
Upvotes: 0
Views: 267
Reputation: 2783
If you suspect that the problem is in your C# interface, then maybe you could create a proxy library in C++ and slip it in between the client and your server. The proxy would just implement IDispatch and forward all calls to Invoke onto the server, and it would log all activity. Of course, this depends on your C++ interface defintion being correct, but you seem confident of that.
But before you go to that trouble, double-check that the problem isn't something simpler. Your description hints that the problem is evident on a customer's computer, rather than on your own, so is your server registered properly on that computer?
Upvotes: 1