--- Loren Amelang <loren@...
> that it is time to ask for some help. What I originally set out to
> do was
> call the XML-RPC capability of SOAP::Lite from my MSVC++6 app.
I'll try to address your questions one by one.
> First I discovered that using MSVC++ #import on Lite.dll produced
> errors I couldn't get past:
> 1 - C++ complains about the '.' in the name of "coclass SOAP.Lite",
> insisting on giving it a "member reference" meaning.
Quite possible. '.' is allowed in the name of COM object; I'll think
about changing it to something else, but it will break the
> 2 - C++ complains about the "SOAP.Lite->new" method name, insisting
> that "new" is a C++ reserved word.
create()/soap() methods are provided as synonim for new() for this
case. Both do the same. If you scan SOAP/Lite.pm for SOAP::Lite::COM
package you'll see the details.
> So I struggled through the C++ example of calling the "Hello,
> control using runtime access, and was able to make it work. But
I'm not sure it helps in your case, but there is an example in c#
(examples/COM/remote.cs) that uses COM interface.
> 1 - The probably trivial problem of how to convert
> "->getTemp(SOAP::Data->name('zipcode')->type(string => $ZipCode))"
> something that OLE can handle. I really haven't spent much time
> looking for
> the answer, but if someone knows, I'd like to hear about it.
probably something like this will work (VB):
CreateObject("SOAP.Lite").data("name", "zipcode", _
"type", "string", "value", ZipCode)
> 3 - The current main problem... As long as I use my modified
> Lite.dll, I
> can use the "new" method or the "soap" method successfully through
> OLE, but
> when I try to use the "xmlrpc" method, it always dies during the
> "CreateObject" call.
It seems like XMLRPC::Lite module is not availble when you create
your dll. if you use make-com-standalone.bat or make-com-minimal.bat
file (both from examples/COM directory) to create your dll you
shouldn't have this problem
> I don't see where the COM dispatch IDs get numbered, not explicitly
> or by
> position in Lite.ctrl, or in Lite.pm. But C++ retrieves the same
I don't know how to answer this either.
> I also don't understand how SOAP::Lite finds XMLRPC::Lite when the
> method is called through OLE. When using Perl directly, you "use
> XMLRPC::Lite" explicitly.
It loads XMLRPC::Lite directly when you call xmlrpc() method, but it
has to be compiled in Lite.dll already. It's included in Lite.ctrl
script (if you use standalone version). Be sure you use ctrl files
> And I just realized I haven't tried rebuilding Lite.dll here
> modifying it - maybe there is some version conflict between my
> 0.55 and my Lite.dll from "11/5/2001" (freshly downloaded from the
> web), or
That's the last available version for COM interface.
> the files that came with ActivePerl 220.127.116.113... I just checked
> the Perl
> "VPM" and it says the current SOAP::Lite package is 0.52, not 0.55
That's the version that comes with ActivePerl. If you install 0.55
manually, information in VPM will not be updated.
> - is this a problem?
Shouldn't be. Just be sure you use COM directory from v 0.55
> Are any of these good leads? Am I missing something painfully
> obvious? Or
> am I trying to do something that just isn't likely to work...
No. This should work except issue with dot in "SOAP.Lite" which makes
it difficult/impossible to use directly from MSVC++.
> that can do both is very attractive. Hope I can get this to work.
> Any clues appreciated!
Hope this was helpful. If not, I'll try to dig more into it. Let me
know if you make any progress, I'll document it or add some examples.
Best wishes, Paul.
Do you Yahoo!?
New DSL Internet Access from SBC & Yahoo!