[rdnzl-devel] Does rdnzl.tar.gz contain an up-to-date build of rdnzl.dll?

Hi all, In brief: Attempting a minimal Windows Presentation Foundation application using the RDNZL 0.13.3 tarball and LispWorks Personal 5.1.1 resulted in a "The calling thread must be STA" error. Using a copy of rdnzl.dll built in Visual Studio C++ 2010 Express eliminated the error. Does rdnzl.tar.gz contain an old(er) build of rdnzl.dll, or is there something else at work? In detail: After appropriate calls to "import-assembly", "use-namespace", etc., I tried the following, and got the subsequent error: RDNZL-USER 9 > (let* ((win (new "Window")) (app (new "Application"))) (setf [%Height win] 300) (setf [%Width win] 300) [Run app win]) Error: .NET error (System.InvalidOperationException): The calling thread must be STA, because many UI components require this. 1 (abort) Return to level 0. 2 Return to top loop level 0. Type :b for backtrace, :c <option number> to proceed, or :? for other options I downloaded the current rdnzl-cpp tarball, and grepped for threading, finding RDNZL\RDNZL.vcxproj: <CLRThreadAttribute>STAThreadingAttribute</CLRThreadAttribute> RDNZL\Stdafx.cpp: System::Threading::Thread::CurrentThread->ApartmentState = System::Threading::ApartmentState::STA; Having no idea how to go about debugging the problem directly, I took a shot in the dark and built the DLL in Visual Studio C++ 2010 Express. It built fine. I replaced the existing rdnzl.dll and tried again: it worked perfectly! Let me know if I can provide any additional details. Thanks, Walter

Hi Walter, The STA line you're seeing in the source code is from version 0.5.1 of the C++ source, i.e. from 2006. The DLL delivered with RDNZL should definitely be current. I have no idea why it should be necessary to recompile it, but I'm not familiar with any recent .NET changes. Maybe somebody else on the list is? Also, I'm still running XP and my VS is from 2004... :) Edi. On Mon, Sep 6, 2010 at 5:55 AM, Walter GR <waltergr@aol.com> wrote:
Hi all,
In brief:
Attempting a minimal Windows Presentation Foundation application using the RDNZL 0.13.3 tarball and LispWorks Personal 5.1.1 resulted in a "The calling thread must be STA" error. Using a copy of rdnzl.dll built in Visual Studio C++ 2010 Express eliminated the error. Does rdnzl.tar.gz contain an old(er) build of rdnzl.dll, or is there something else at work?
In detail:
After appropriate calls to "import-assembly", "use-namespace", etc., I tried the following, and got the subsequent error:
RDNZL-USER 9 > (let* ((win (new "Window")) (app (new "Application"))) (setf [%Height win] 300) (setf [%Width win] 300) [Run app win])
Error: .NET error (System.InvalidOperationException): The calling thread must be STA, because many UI components require this. 1 (abort) Return to level 0. 2 Return to top loop level 0.
Type :b for backtrace, :c <option number> to proceed, or :? for other options
I downloaded the current rdnzl-cpp tarball, and grepped for threading, finding
RDNZL\RDNZL.vcxproj: <CLRThreadAttribute>STAThreadingAttribute</CLRThreadAttribute> RDNZL\Stdafx.cpp: System::Threading::Thread::CurrentThread->ApartmentState = System::Threading::ApartmentState::STA;
Having no idea how to go about debugging the problem directly, I took a shot in the dark and built the DLL in Visual Studio C++ 2010 Express. It built fine. I replaced the existing rdnzl.dll and tried again: it worked perfectly!
Let me know if I can provide any additional details.
Thanks,
Walter
_______________________________________________ rdnzl-devel mailing list rdnzl-devel@common-lisp.net http://common-lisp.net/cgi-bin/mailman/listinfo/rdnzl-devel
participants (2)
-
Edi Weitz
-
Walter GR