I appreciate your response, and your willingness to help. As if I weren't
confused enough already, I am confused by your confusion :)
I did just have a coworker send me working code using PyCall:
@pyimport win32com.client as w32
engine = w32.Dispatch("TestDLL.DSS")
engine[:Start]("0")
Does that just add an extra layer of overhead? We are going to be calling
that in a loop with large data sets so efficiency is important (realize the
size of the dataset is not a factor here, but it means the program is going
to run a long time already and I wan to avoid making it any longer).
I do not have source for the DLL. In Excel, I viewed the object browser,
selected references, browsed to the DLL and clicked on it.
I am surprised, though, not to find an index for "Start" in dumpbin -- nor
for "DSS". I do think I read somewhere that the DLL was written in Delphi,
but I am not sure of that right now.
It's been a few years since I last wrote any "real program", but I am
pulling out C# try to get *something* working.
----------
Dump of file TestDLL.dll
File Type: DLL
Summary
D000 .bss
64000 .data
1000 .didata
1000 .edata
6000 .idata
33000 .pdata
23000 .reloc
61000 .rsrc
4EB000 .text
----------
So, though I know a lot of stuff goes on in the background, it appears as
if everything needed to use this DLL comes inside the DLL -- neither PyCall
nor VBA requested any additional information. VBA then presents Classes in
the left pane, Members in the right, and I call the function thus (looks a
lot like PyCall):
Set TestObj = New TestDLL.DSS
TestObj.Start(0)
Therefore, I took this to be a Julia syntax question: "how do I 'spell'
SomeDLL.SomeCLASS, in Julia?"
I hope this is enough info, or that I can "backtrace" what the PyCall is
doing. I did read that PyCall is basically a wrapper around ccall. I am
very new to Julia (in case you can't tell), I think this will all come
together for me very quickly once I find the cornerstone.
Thank you!!
-------------------------------------------------------
On Tuesday, May 5, 2015 at 5:00:15 PM UTC-5, Isaiah wrote:
>
> We really need more information to be able to help here. How is the
> function exported? It might be simplest for you to post the source for
> TestDLL, if possible, or barring that, the signature of Start from
> Dependency Walker (or Dumpbin).
>
> ccall doesn't know anything about COM or C++. The former is somewhat
> tractable, the latter minimally so, especially if the DLL uses MSVC ABI.
>
> (in principle it should be possible to do full COM introspection and
> binding for dynamic COM interfaces in pure Julia, but I don't know of
> anyone who has tried to do so yet)
>
> In case it helps, I have some more examples of how to call Win32
> functions, here:
> https://github.com/ihnorton/Win32GUIDemo.jl
>
>