
(Apologies if this posts twice; I outsmarted myself with mailman, and I tried to cancel the first one that mailman thought was posted by a non list member.) Hi, I'm having trouble invoking a static member on a class. I've reduced the case to the following simple test case, and I suspect I may be missing somewhat simple. (I'm far from a Lisp wizard. Far...) Basically, I'm trying to load a C# assembly, and be able to call a static method on it. I can call instance methods without issue, but make-type-from-name is not working the way I expect it should, and therefore, calling static methods fails. Any help would be appreciated! --Jim Source code and sample interaction below: Lisp interaction: (win32, using slime and clisp-2.38, but I doubt it makes any difference) Some output trimmed for legibility. CL-USER> (load "/c/vp/devenv/lib/clisp/rdnzl-0.9.1/load.lisp") CL-USER> (in-package :rdnzl) RDNZL> (enable-rdnzl-syntax) RDNZL> (setq lisp-sample-assembly (import-assembly [System.Reflection.Assembly.LoadFrom "C:\\temp\\bin\\Debug\\LispSample1.dll"])) RDNZL> (setq p (new (import-type "LispSample1.Parrot" lisp-sample-assembly) "Bob")) #<CONTAINER LispSample1.Parrot #x2929E6A8> RDNZL> (ffi-call-with-args %invoke-instance-member p "SayHello" '(42)) 47 RDNZL> (resolve-type-name "LispSample1.Parrot") "LispSample1.Parrot, LispSample1, Version=1.0.2230.24825, Culture=neutral, PublicKeyToken=null" ;; To me, it appears that that worked. RDNZL> (make-type-from-name (resolve-type-name "LispSample1.Parrot")) #<CONTAINER NULL #x2929E540> RDNZL> ;; ^^^^ This appears to be as close to the root of the problem as ;; I am able to get RDNZL> (invoke p "SayHello" 17) 22 ;; this worked (There is stdout output, but my slime discards it.) RDNZL> (invoke p "StaticSayHello" "Bill" 17) ; Evaluation aborted ;; failed - .NET error (System.Exception): Instance method not found: LispSample1.Parrot::StaticSayHello(System.String,System.Int32) ;; Of course, it's not an instance method... RDNZL> (invoke "LispSample1.Parrot" "StaticSayHello" "Bill" 17) Trying to call function %INVOKE-STATIC-MEMBER with NULL object #<CONTAINER NULL #x292961E0>. C# class is here, compiled into an assembly: C:\temp\bin\Debug\LispSample1.dll using System; namespace LispSample1 { public class Parrot { private string m_name; public Parrot(string name) { m_name = name; } public int SayHello(int value) { Console.WriteLine("Hello {0}.", m_name); return value + 5; } static public int StaticSayHello(string name, int value) { Console.WriteLine("Hello {0}.", name); return value * 2; } } }